我正在使用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
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.
Run Code Online (Sandbox Code Playgroud)
编辑:正如我在下面的评论中提到的,执行该技巧的选项是FontProtection = false.
虽然我说 Doc.HtmlOptions 就是答案,但事实证明它完全是另一回事。符号没有显示,因为字体粗细不正常(即,它是粗体)。没有包含这些字符的粗体子集。IE 足够聪明,可以忽略粗体部分,但 PDF 则相当挑剔。它找不到该字符,因此什么也没有显示。
真正的解决方案是梳理 HTML 并确保所有符号都被一个spanwith包围font-weight: normal !important。这也许是一个不太优雅的解决方案,但它很有效。唯一仍然随机拒绝显示的符号是角度符号 ( ∠)。为此,我用图像替换了它。我还是不明白为什么它不会出现。
| 归档时间: |
|
| 查看次数: |
3842 次 |
| 最近记录: |