我正在使用ABCpdf.net组件将HTML转换为PDF。某些HTML使用Symbol字体显示某些字符。不幸的是,我们正在使用来自第三方的HTML,并且无法更改。
我的开发环境正确显示字体,但我的生产环境不会。它就好像没有安装字体,即使它是。如果我在生产环境中的Internet Explorer中呈现相同的HTML,它就会显示正常。
我尝试将字体嵌入为.eot并在标题中提供@ font-face样式。我尝试过使用TheDoc.AddFont('Symbol')。有什么建议吗?
产品:ABCpdf .NET 7 x64
生产操作系统:Windows Server 2003 x64,IE8
开发操作系统:Win7 x64,IE8
答案 0 :(得分:6)
WebSuperGoo支持团队回复了修复:设置与字体相关的HtmlOptions。我设置了这些选项,它解决了这个问题。耶!
If you want to embed the fonts used in a web page/HTML you need to use:
Doc.HtmlOptions.FontEmbed = True
You may also need to set
Doc.HtmlOptions.FontSubstitute = False
and possibly:
Doc.HtmlOptions.FontProtection = False
before you use the Doc.AddImageUrl or Doc.AddImageHtml methods.
编辑:正如我在下面的评论中提到的,执行该技巧的选项是FontProtection = false。
答案 1 :(得分:2)
尝试重新启动服务器。
我在ABCPdf上遇到了类似的问题。虽然字体已经清楚地安装了,但由于某种原因,ABDPdf在机器重新启动之前没有接收它们。
可能有一些非重启方式可以实现同样的目的,但这需要了解问题所在!如果这很容易,只需尝试重新启动。
答案 2 :(得分:2)
虽然我说Doc.HtmlOptions就是答案,但事实证明它完全是另一回事。符号没有显示,因为字体权重不正常(即,粗体)。没有包含这些字符的粗体子集。 IE很聪明,可以忽略大胆的部分,但PDF相当挑剔。它找不到角色,所以它什么也没有显示。
真正的解决方案是梳理HTML并确保所有符号都被span
font-weight: normal !important
包围。它可能是一个不太优雅的解决方案,但它是有效的。仍然随机拒绝显示的唯一符号是角度符号(∠
)。为此,我用图像替换它。我仍然无法弄清楚为什么它不会出现。