5

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

4

3 回答 3

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。

于 2011-09-23T02:48:07.307 回答
2

尝试重新启动服务器。

我在 ABCPdf 上遇到了类似的字体问题。尽管字体已明确安装,但出于某种原因,ABDPdf 直到机器重新启动后才拾取它们。

可能有一些非重启方式可以实现相同的目标,但这需要了解问题所在!如果这很容易,请尝试重新启动。

于 2011-09-22T20:48:47.577 回答
2

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

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

于 2012-01-20T00:05:15.887 回答