符号字体上的ABCpdf

本文关键字:ABCpdf 字体 符号 | 更新日期: 2023-09-27 18:09:36

我正在使用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

符号字体上的ABCpdf

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。

尝试重新启动服务器。

我在ABCPdf上遇到过类似的问题。虽然字体已经安装好了,但由于某些原因,ABDPdf直到机器重新启动后才把它们捡起来。

可能有一些不需要重启的方法来实现同样的事情,但这需要理解问题所在!

虽然我说过Doc。htmlloptions是答案,但事实证明它完全是另一回事。符号没有显示,因为字体粗细不正常(即,它是粗体)。没有包含这些字符的粗体子集。IE足够聪明,可以忽略粗体部分,但PDF相当挑剔。它找不到字符,所以什么也没显示。

真正的解决方案是梳理HTML并确保所有符号都被spanfont-weight: normal !important包围。这可能是一个不那么优雅的解决方案,但它是有效的。唯一仍然随机拒绝出现的符号是角度符号(∠)。为此,我将其替换为图像。我还是不明白为什么它不出现