【发布时间】:2020-08-31 16:45:49
【问题描述】:
我使用 PDFBox (2.X) 将 PDF 转换为图像。整个事情是在 linux 下运行的,以前我在使用非嵌入字体转换某些 PDF 时遇到了一些麻烦。然后我将 base-14 字体添加到系统中,一切正常。到目前为止一切顺利。
现在出现了一个使用 Courier-Bold 的 PDF,但结果如下,尽管系统上安装了 Courier-Bold。 (应该是罗马字母,因为我的俄语有点生疏了 ;-):
所以我有点困惑为什么 PDF 没有正确转换。 PDF中的字体定义为
1 0 obj <</Subtype/Type1/Type/Font/BaseFont/Courier-Bold/Encoding/WinAnsiEncoding>>
那么为什么 PDFBox 没有选择正确的字体呢?转换 PDF 时没有显示警告。安装了以下字体:
- Courier.ttf
- CourierBold.ttf
- CourierOblique.ttf
- Courierboldoblique.ttf
我还安装了 cmets (CourierNewPS-BoldMT,CourierNew-Bold,LiberationMono-Bold,NimbusMonL-Bold) 中提到的其他字体,但都没有工作。
每次我添加新字体(到/.local/share/font)时,我都会从 PDFBox 收到消息,指出找到了新字体 - 因此字体本身被识别。一定是别的东西。
【问题讨论】:
-
我看不出 PDF 有什么问题。它使用 callas pdfToolbox 显示并转换为 PNG 图像(注意,我使用此工具)- PDF 和图像看起来相同(并且都是德语)。字体没有嵌入(这本身是不好的但允许的),但我也看不出这个定义有什么问题。似乎指向一个 PDFBox 特定问题(我对此无能为力:))
-
在 windows 系统上,转换也可以正常工作 - 但 windows 会带来一些其他字体...
-
我并不感到惊讶 - 看起来像是编码问题。原因可能是字体(可疑),或者更可能我会说 PDFBox 从操作系统中获取默认编码并忽略 PDF 中的字体告诉它的内容(即 Win Ansi)。如果 PDFBox 中有编码设置,您可以使用这些设置。或者,如果可以更改 Linux 中的默认设置以尝试是否有帮助,那么这可能也是值得一试的。
-
它在我的 W10 和 2.0.21 上运行良好... PDF 是一个非常简单的 PDF。是否有任何日志消息?您的系统上是否存在以下字体:“CourierNewPS-BoldMT”、“CourierNew-Bold”、“LiberationMono-Bold”、“NimbusMonL-Bold”?
-
:-D 是的,让我们这样做。如果您将其添加为答案,我将排除它。如果你没有时间,我会稍后再做。