如何使用 RDLC 在 PDF 中嵌入字体
Posted
技术标签:
【中文标题】如何使用 RDLC 在 PDF 中嵌入字体【英文标题】:How to embed a Font in a PDF with RDLC 【发布时间】:2010-10-18 00:51:00 【问题描述】:我正在使用 Microsoft.Reporting.WebForms.LocalReport 生成一些 PDF,一切都像魅力一样,但现在邪恶的营销想要使用自定义字体(他们正在使用诸如“企业身份”之类的疯狂论点)。
我已经看过了,现在我知道了
我需要 ReportViewer 2008 SP1 或更高版本 字体必须标记为允许嵌入 字体必须是 TrueType但它仍然不起作用。 我相信 RDLC 不支持此功能,有人知道是否是这种情况吗? 不幸的是,我无法使用服务器端报告,因为我缺少报告服务器。
tia
【问题讨论】:
找到解决方案了吗?遇到同样的问题... 这对我们有用 - 我们正在使用与 Visual Studio 2010 捆绑的 Microsoft Reporting 版本。 【参考方案1】:为了补充 marc.d 的出色答案,我可以确认,在我的情况下,我还必须完全重新启动服务器。我还要补充一点,检查字体是否可嵌入的方法是执行我在下面描述的两种方法之一。
方法一)如果你的字体已经安装了
在 Windows 资源管理器中浏览到 C:\Windows\Fonts\,找到您感兴趣的字体。请注意,同一家族中的字体将被组合在一起,因此您需要双击一个组才能导航到单个字体文件。在资源管理器窗口底部的属性列表中,您将看到“可嵌入性”:
方法 2)如果您在其他位置有 TTF 文件
使用 Windows 资源管理器,打开文件属性并切换到详细信息选项卡:
您可能会看到字体的可能值是:
无嵌入 - 字体供应商不允许嵌入。这些字体非常少见。 打印和预览 - 字体供应商允许嵌入,但文档被锁定且无法编辑。大多数第三方字体都有此设置。 可编辑 - 字体供应商允许将字体嵌入到文档中,并允许使用嵌入的字体编辑文档 Installable - 这是最宽松的设置。字体供应商允许将字体嵌入文档中,并允许文档查看应用程序将字体永久安装在用户的计算机上。大多数应用程序将这些字体视为设置为可编辑嵌入的字体。来源:https://www.microsoft.com/en-us/microsoft-365/blog/2015/07/06/document-font-embedding-demystified/
【讨论】:
【参考方案2】: 字体必须标记为允许嵌入 字体必须是 TrueType 类型 将您的字体添加到 Windows 服务器字体中如果您执行了上述所有操作并且字体未显示在 Pdf 报告 RDLC 文件中,
也许你必须重新启动服务器,它确实对我有用
【讨论】:
【参考方案3】:我遇到了同样的问题,但我发现不需要嵌入字体。问题在于 html 中的 Font Face 属性。我们使用的 HTML 编辑器生成了这样的 Font 标签:
<font face="Impact,Charcoal,sans-serif" size="6">Impact </font>
这对于报告查看器来说很好,但要生成 PDF 文件,它需要如下所示:
<font face="Impact" size="6">Impact </font>
所以我添加了代码来替换绑定到报表之前的属性值:
htmlValue = htmlValue.Replace("Impact,Charcoal,sans-serif", "Impact")
.Replace("Arial,Helvetica,sans-serif", "Arial")
.Replace("Georgia,serif", "Georgia")
.Replace("Verdana,Geneva,sans-serif", "Verdana")
.Replace("'Courier New',Courier,monospace", "Courier New")
.Replace("'Lucida Console',Monaco,monospace", "Lucida Console")
.Replace("Tahoma,Geneva,sans-serif", "Tahoma")
.Replace("'Times New Roman',Times,serif", "Times New Roman")
.Replace("'Trebuchet MS',Helvetica,sans-serif", "Trebuchet MS");
【讨论】:
【参考方案4】:嵌入字体适用于 Microsoft Reporting 2010 或更高版本,以下限制仍然适用
字体必须标记为允许嵌入 字体必须是 TrueType 类型您可能会遇到字体被嵌入但 PDF 仍以 Arial 显示文本的问题。这发生在我在 Windows Server 2008 R2 上安装了一些新字体之后,重新启动 AppPool (ASP.NET MVC) 并没有解决这个问题,需要重新启动服务器。
【讨论】:
【参考方案5】:我在 Visual Studio 2008 中使用 Arial Narrow 字体做了一个简单的测试,效果很好。 我已经在没有字体的虚拟 XP 机器上测试了生成的 PDF,并且渲染正常。 可能是字体的问题?
嗯,也许是这样 - 在我的测试中,我使用了 Winforms.LocalReport 而不是 WebForms。也许这就是诀窍?
【讨论】:
以上是关于如何使用 RDLC 在 PDF 中嵌入字体的主要内容,如果未能解决你的问题,请参考以下文章