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

问题描述 投票:6回答:4

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

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

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

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

射线

.net pdf fonts embed rdlc
4个回答
5
投票

嵌入字体与Microsoft Reporting 2010或更高版本一起使用时,以下限制仍然适用

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

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


0
投票

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

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


0
投票

我遇到了同样的问题,但我发现字体不需要嵌入。问题出在HTML中的Font Face属性。我们使用的HTML编辑器生成了像这样的Font标签:

<font face="Impact,Charcoal,sans-serif" size="6">Impact </font>

哪个适用于Report Viewer,但要生成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");

0
投票
  • 字体必须标记为允许嵌入
  • 字体必须是TrueType类型
  • 将您的字体添加到Windows服务器字体

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

也许你必须重新启动服务器,它确实适合我

© www.soinside.com 2019 - 2024. All rights reserved.