我正在使用iText(Java lib)处理已创建的PDF文件。
我想要实现的是用PDF基本字体替换与PDF基本字体度量兼容的字体。这将使PDF更“合规”,也可能更小。
这是怎么回事:
/F13
,这样我们就不需要触摸任何文本
对象)。由于iText在其jar中嵌入了PDF的AFM文件
基本字体我假设iText实际上有足够的知识
做这个评估。我可能要看一下
serif / sans-serif和monotype flags以及我是否应该交换
在Helvetica,Times或Courier。 一个例子:
现有的PDF文件使用“Calibri”,“Arial”和“Times”。以下是每种方法的处理方式。
宋体。此字体在PDF基本字体中没有与度量兼容的表兄弟,因此将跳过对此字体资源的处理。
Arial字体。此字体在PDF基本字体中具有与度量兼容的表兄弟,即“Helvetica”。字体资源的名称(我认为属性BaseFont
)将更改为“Helvetica”,并且将删除任何可能的嵌入。
时报。此字体已是PDF基本字体。跳过处理。 (我们可以考虑在这里解开,如果有什么东西要解开,但我已经知道如何做到这一点而不是问题的一部分)
我基本上陷入了确定度量兼容性的步骤。非常感谢任何帮助。
(注意:基于iText 5.x的答案是完全可以的,因为我觉得最近的iText 7仍然有些无证)
正如所指出的那样,为了安全替换,还需要进行一些检查:
我确信我可以找出检查这两种情况。 (我很天真)
我不想做一般工具。我知道我将处理PDF的来源。在任何情况下,我想如果无法确定替换是“安全的”,可以从PDF中获取足够的信息来跳过字体替换。