【发布时间】:2013-10-08 05:11:54
【问题描述】:
我一直在尝试将所有丢失的字体嵌入到 pdf 中,以避免在打印或渲染它们时因为字体替换而出现“意外”。
所以我使用BergamoStd 字体创建了一个仅包含“Bergamo Std”文本的文档。 之后使用 Pdf Creator 生成没有字体嵌入的 pdf:BergamoStd.pdf
我使用 C#/iText 将字体嵌入到 pdf 中。 (BergamoStd-embedded.pdf) 无论系统中是否存在字体,我都可以正确渲染嵌入的 pdf。 Adobe reader、qpdfview、evince 渲染 pdf 没有问题,acrobat reader 告诉字体嵌入以及 pdffonts。
qpdf 没有报告此 pdf 的任何问题。
如果我使用 ghostscript (9.07) 从嵌入的 pdf 生成 ps 文件,我会得到一个可以渲染和打印的 ps,并且字体也嵌入在该 ps 文件中。 pdf2ps 当然会得到与 ghostscript 相同的结果。 甚至 Windows 中的 xpdf 也会生成一个有效的 ps 文件,其中嵌入了字体。
但如果我使用 poppler-utils (v0.24) 的 pdftops 生成 ps 文件,我会得到一个没有嵌入字体的小 ps 文件。
更进一步;即使系统中存在 bergamoStd.ttf 文件,pdftops 也无法在 .ps 中嵌入字体,无论输入的 pdf 是嵌入字体还是未嵌入字体。
谁能解释为什么 pdftops 不能嵌入这种字体? 我错过了什么吗?
如果您不想按照我之前描述的步骤生成自己的文件,我的测试文件可用here。
TIA。
【问题讨论】:
-
您究竟是如何使用 iTextSharp 事后嵌入字体的?
-
我遵循了您提到的相同 itext 示例(使用 itextSharp),因为字体不是 TrueType,我使用 PdfName.FONTFILE3 代替。所以我需要指定所需的子类型,为此我关注this iText post。这样,pdf 就“足够接近”正确性了,许多工具都没有报告任何问题,但 pdftops 确实如此,@VadimR 解释了原因。
标签: pdf fonts itextsharp