【发布时间】:2015-08-24 14:30:08
【问题描述】:
我想检查 PDF 是否嵌入了所有字体。我按照How to check that all used fonts are embedded in PDF with Java iText? 中提到的编码进行了操作,但我仍然无法获得正确使用的字体列表。
查看我的示例 pdf:https://www.dropbox.com/s/anvm49vh87d8yqs/000024944.pdf?dl=0,编码完全不返回任何字体,但 acrobat 中的文档属性提到 Helvetica + Verdana(嵌入式子集)+ Verdana-Bold(嵌入式子集)。对于其他 pdf,我确实获得了 Verdana Embedded 子集,仅对于这些类型的 pdf,我无法获得字体列表。
由于我们必须处理来自内部作为外部来源的大量 pdf,我们需要能够嵌入字体以便打印它们。由于几乎不可能嵌入所有字体,我们只想嵌入常用字体,对于外来字体,我们会忽略 printrequest。
谁能帮我解决这个问题?谢谢
【问题讨论】:
-
我用 callas pdfToolbox 检查了你的文件(注意,我隶属于这个工具),它指出 Verdana 和 Verdana 粗体已嵌入(和子集)但 Helvetica 没有嵌入;这与 Adobe Acrobat 报告相同。
-
还有一个有点“题外话”的评论——您确实意识到即使嵌入标准字体也是一件危险的事情,对吧?无法保证您的字体副本与原始 PDF 文件创建者使用的字体相同,并且您最终可能会遇到不同的宽度,或者在嵌入字体时出现编码问题。
-
如果我将文本复制到 word 文档中,我找不到任何对 Helvetica 字体的引用,所以我猜它根本没有使用?我设法使用 Itext 以不同的方式获取字体(请参阅下面的回复)。它也根本没有返回 Helvetica。
-
Helvetica 被定义为
/F2,并且只用于空文本字符串:() Tj % show text string(很多)。因此,是否“使用”取决于您对“使用”的定义。