使用PDFBox将PDF转换为图像会产生奇怪的字符字体问题

问题描述

我使用PDFBox(2.X)将PDF转换为图像。整个程序都在Linux下运行,以前我在转换某些非嵌入式字体的PDF时遇到了一些麻烦。然后,我将base-14字体添加到系统中,一切正常。到目前为止一切顺利。

现在,尽管系统上已安装Courier-Bold,但其中使用的PDF却使用Courier-Bold,但结果如下。 (应该是罗马字母导致我的骚动有些生锈;-):

enter image description here

所以我有点困惑为什么PDF转换不正确。 PDF中的字体定义为 1 0 obj <</Subtype/Type1/Type/Font/BaseFont/Courier-Bold/Encoding/WinAnsiEncoding>>

那么,为什么PDFBox没有选择正确的字体?转换PDF时未显示警告。已安装以下字体:

  • Courier.ttf
  • CourierBold.ttf
  • CourierOblique.ttf
  • Courierboldoblique.ttf

我还安装了注释(CourierNewPS-BoldMT,CourierNew-Bold,LiberationMono-Bold,NimbusMonL-Bold)中提到的其他字体,但两种字体均无效。 每次我添加新字体(到/.local/share/font)时,我都会从PDFBox收到一条消息,提示已找到新字体-因此可以识别字体本身。一定是其他东西。

解决方法

原因与字体本身有关。当前,PDFBox希望使用“ Courier-Bold”字体或替代字体,其名称为

  • CourierNewPS-BoldMT
  • CourierNew-Bold
  • 解放单声道
  • NimbusMonL-Bold

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