我正在使用Microsoft.Reporting.WebForms.LocalReport生成一些PDF,一切都像魅力,但现在邪恶的营销想要使用自定义字体(他们使用如“疯狂的参数”作为“企业形象”和东西)。
我已经瞪眼了,现在我知道了
但它仍然无效。 我相信RDLC不支持此功能,是否有人知道是否是这种情况? 不幸的是,我无法使用服务器端报告,因为我缺少报告服务器。
TIA
答案 0 :(得分:5)
嵌入字体适用于Microsoft Reporting 2010或更高版本,以下限制仍适用
您可能会遇到嵌入字体的问题,但您的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)
如果您执行以上所有操作,但字体未显示在Pdf报告RDLC文件中,
也许您必须重新启动服务器,它确实对我有用
答案 4 :(得分:0)
要添加到marc.d的出色答案中,我可以确认就我而言,我还必须完全重新启动服务器。我还要补充一点,检查字体是否可嵌入的方法是执行下面介绍的两种方法之一。
方法1)如果您的字体已经安装
在Windows资源管理器中,浏览到C:\ Windows \ Fonts \,然后找到您感兴趣的字体。请注意,同一系列中的字体将被分组在一起,因此您需要双击一个组才能导航到单个字体文件。在“资源管理器”窗口底部的属性列表中,您将看到“可嵌入性”:
方法2)如果您将TTF文件放在其他位置
使用Windows资源管理器,打开文件“属性”并切换到“详细信息”选项卡:
您可能会看到的字体值为:
来源:https://www.microsoft.com/en-us/microsoft-365/blog/2015/07/06/document-font-embedding-demystified/