PDFBox NPE加载字体

时间:2016-10-03 12:13:18

标签: java pdfbox

我正在使用PDFBox从多个PDF文档中提取文本,并且在运行我的单元测试套件时(通过gradle)我遇到由NullPointerException引起的间歇性故障 - 我的基本假设现在是它是由多个线程尝试将字体同时加载到字体dictionanry缓存中。

我知道,as is stated in the FAQs,PDFBox不是线程安全的 - 但我从那里得到的印象和this discussion here,这是特别涉及同时访问文档的多个线程,以及注释似乎表明fontbox缓存预计是线程安全的。

我在单元测试中得到的例外是:

WARNING: Using fallback font 'LiberationSans-Bold' for 'Arial-BoldItalicMT'
  java.lang.NullPointerException:
  at org.apache.pdfbox.pdmodel.font.FontMapperImpl.getFont(FontMapperImpl.java:463)
  at org.apache.pdfbox.pdmodel.font.FontMapperImpl.findFont(FontMapperImpl.java:417)
  at org.apache.pdfbox.pdmodel.font.FontMapperImpl.getTrueTypeFont(FontMapperImpl.java:321)
  at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.<init>(PDTrueTypeFont.java:198)
  at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:75)
  at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:123)
  at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
  at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:815)
  at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:472)
  at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446)
  ...
Oct 03, 2016 12:21:24 PM org.apache.pdfbox.pdmodel.font.PDTrueTypeFont <init>
WARNING: Using fallback font 'LiberationSans-Bold' for 'Arial-BoldMT'
Oct 03, 2016 12:21:24 PM org.apache.pdfbox.pdmodel.font.PDTrueTypeFont <init>

我正在使用PDFBox版本2.0.2

之前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:2)

这已在版本2.0.4的PDFBox库中修复

原始门票中的详细信息:https://issues.apache.org/jira/browse/PDFBOX-3521