我在将波兰语字体嵌入从 HTML 转换为 PDF 时遇到问题。
我的 HTML 代码正文有样式:
<BODY style="font-family: Tahoma, Arial, sans-serif;font-size : 8pt;">
我尝试了两种将此类 HTML 转换为 PDF 的方法:
- FOP 与 htmlcleaner
- 带飞碟的 iText
对于 FOP,我可以将所有使用的字体添加到其配置文件中,然后创建嵌入这些字体的 PDF(如果在 HTML 中使用字体)。在生成的 PDF 中,我有 Identity-H 编码的 Tahoma 字体。看起来不错——所有波兰语字母都按预期显示。
然后我尝试使用 iText 进行此类转换:似乎更简单,因为我不需要为每个 HTML 创建转换。不幸的是我不知道如何将使用过的字体嵌入到生成的 PDF 中。我发现的大多数示例都是从头开始创建 PDF,我不知道如何将这些方法应用于 Flying Saucer ITextRenderer 或转换中使用的其他对象。
我当前的代码尝试添加字体PDFCreationListener.preOpen()
通过得到ITextFontResolver
并添加字体fs.addFont(path, true);
。但我创建的所有 .pdf 都没有我想要的字体。
第二个问题是结果 PDF 没有波兰语字母。是飞碟问题还是iText问题? Acrobat 显示创建的 PDF 文档使用带有 Ansi 编码的 Helvetica 和 ArialMT 作为字体。我觉得这个Ansi编码不好。如何设置波兰编码(Identity-H)?
您可以尝试 -fs-pdf-font-embed 和 -fs-pdf-font-encoding css 规则。
来自用户手册 http://flyingsaucerproject.github.com/flyingsaucer/r8/guide/users-guide-R8.html:
-fs-pdf-字体嵌入:与字体规则中嵌入的值一起使用
让 Flying Saucer 在 PDF 文档中嵌入字体文件,
避免调用 FontResolver 的 addFont() 方法
班级
-fs-pdf-字体编码:在字体规则中使用来指定要嵌入 PDF 中的自定义字体的编码;将编码的名称作为值。
例如在你的打印CSS中:
@font-face {
font-family: DejaVu Serif;
src: url(fonts/DejaVuSerif.ttf);
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: Identity-H;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)