【问题标题】:Converting PDF to image with PDFBox results in strange characters (Font issue)使用 PDFBox 将 PDF 转换为图像会产生奇怪的字符(字体问题)
【发布时间】: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 是的,让我们这样做。如果您将其添加为答案,我将排除它。如果你没有时间,我会稍后再做。

标签: pdf pdfbox


【解决方案1】:

原因与字体本身有关。目前,PDFBox 需要“Courier-Bold”,或者作为替代品,字体名称为

  • CourierNewPS-BoldMT
  • CourierNew-Bold
  • LiberationMono-Bold
  • NimbusMonL-粗体

删除“Courier-Bold”字体并添加上述字体之一解决了问题。最可能的解释是字体坏了。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-02-20
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2011-07-13
  • 2016-02-14
  • 1970-01-01
相关资源
最近更新 更多