如何使用RDLC在PDF中嵌入字体

时间:2009-04-07 11:34:46

标签: .net pdf fonts embed rdlc

我正在使用Microsoft.Reporting.WebForms.LocalReport生成一些PDF,一切都像魅力,但现在邪恶的营销想要使用自定义字体(他们使用如“疯狂的参数”作为“企业形象”和东西)。

我已经瞪眼了,现在我知道了

  • 我需要ReportViewer 2008 SP1或更高版本
  • 字体必须标记为允许嵌入
  • 字体必须为TrueType

但它仍然无效。 我相信RDLC不支持此功能,是否有人知道是否是这种情况? 不幸的是,我无法使用服务器端报告,因为我缺少报告服务器。

TIA

5 个答案:

答案 0 :(得分:5)

嵌入字体适用于Microsoft Reporting 2010或更高版本,以下限制仍适用

  • 字体必须标记为允许嵌入
  • 字体必须为TrueType
  • 类型

您可能会遇到嵌入字体的问题,但您的PDF仍会在Arial中显示文字。在我在Windows Server 2008 R2上安装了一些新字体之后发生了这种情况,重新启动AppPool(ASP.NET MVC)并没有解决这个问题,需要重新启动服务器。

答案 1 :(得分:0)

我在Visual Studio 2008中使用Arial Narrow字体做了一个简单的测试,它运行良好。 我已经在没有字体的虚拟XP机器上测试了生成的PDF并且它呈现了正常。 也许这是字体的问题?

嗯,也许是这个 - 在我的测试中我使用Winforms.LocalReport而不是WebForms。也许这就是诀窍?

答案 2 :(得分:0)

我遇到了同样的问题,但我发现不需要嵌入字体。问题出在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");

答案 3 :(得分:0)

  • 字体必须标记为允许嵌入
  • 字体必须为TrueType类型
  • 将字体添加到Windows服务器字体

如果您执行以上所有操作,但字体未显示在Pdf报告RDLC文件中,

也许您必须重新启动服务器,它确实对我有用

答案 4 :(得分:0)

要添加到marc.d的出色答案中,我可以确认就我而言,我还必须完全重新启动服务器。我还要补充一点,检查字体是否可嵌入的方法是执行下面介绍的两种方法之一。

方法1)如果您的字体已经安装

在Windows资源管理器中,浏览到C:\ Windows \ Fonts \,然后找到您感兴趣的字体。请注意,同一系列中的字体将被分组在一起,因此您需要双击一个组才能导航到单个字体文件。在“资源管理器”窗口底部的属性列表中,您将看到“可嵌入性”: enter image description here

方法2)如果您将TTF文件放在其他位置

使用Windows资源管理器,打开文件“属性”并切换到“详细信息”选项卡: enter image description here

您可能会看到的字体值为:

  • 不嵌入-字体供应商不允许嵌入。这些字体非常罕见。
  • 打印和预览-字体供应商允许嵌入,但是文档被锁定且无法编辑。大多数第三方字体都具有此设置。
  • 可编辑-字体供应商允许将字体嵌入文档中,并允许使用该嵌入字体编辑文档
  • 可安装-这是最宽松的设置。字体供应商允许将字体嵌入文档中,并允许文档查看应用程序将字体永久安装在用户的计算机上。大多数应用程序将这些字体视为设置为“可编辑嵌入”的字体。

来源:https://www.microsoft.com/en-us/microsoft-365/blog/2015/07/06/document-font-embedding-demystified/