1

我正在使用 PDFBox 在 JInternalFrame 中显示 PDF 文件。打开 PDF 时,我收到很多这样的警告:

Changing font on <m> from <Tahoma Negrita> to the default font

我知道所报告的字体不是标准的 14 种字体集的一部分。所以我决定检查这些字体是否嵌入在 PDF 文件中(认为加载嵌入字体应该没有问题,对吧?)。

所以我在不同的阅读器上打开文件并检查属性/字体。我怀疑此部分是否报告文档所需的字体或文档中实际嵌入的字体。

我得到的信息如下:

BAAAA+Tahoma-Bold (embedded Subset), type:TrueType, Encoding:
CAAAA+Tahoma (Embedded Subset), type:TrueType, Encoding:

对此感到困惑,我研究了如何从 OpenOffice 嵌入字体,发现应该选中 PDF/A-1a 选项。因此,我使用此选项制作了另一个 PDF(以防在制作原始 PDF 文件时未使用此选项),但我得到了相同的结果。

我希望您的指导了解这是如何工作的。我希望能够像 PDF 阅读器一样打开 PDF 文件。我还阅读了有关 PDFBox_External_Fonts.properties 的信息,但我猜这个文件不应该被修改,因为我正在处理嵌入字体。

谢谢。

4

1 回答 1

3

pdfbox 无法解析 TrueType 字体的嵌入子集。

据我了解,嵌入式 TrueType 子集缺少 pdfbox 需要的字体文件的一些元数据。

该错误是已知的,但不容易解决。现在我只能建议尽可能使用嵌入式 Type 1 字体,pdfbox 可以处理它们。

您还可以尝试在 org/apache/pdfbox/resources/PDFBox_External_Fonts.properties 下的 pdfbox.jar 中设置完整字体文件的路径,因此如果 pdfbox 无法解析子集,至少它可以找到原始的完整路径字体文件。也许这行得通,但我还没有测试过。

祝你好运!

于 2012-08-23T08:05:40.357 回答