我正在使用PDFBox从几个PDF文档中提取文本,在运行我的单元测试套件(通过gradle)时,我得到了由NullPointerException引起的间歇性故障--我现在的基本假设是,它是由试图同时将字体加载到字体字典缓存的多个线程造成的。
我知道,如常见问题中所述,PDFBox并不是threadsafe --但我从它和这里的讨论中得到的印象是,这与同时访问文档的多个线程特别相关,而且评论似乎表明,字体盒缓存应该是线程安全。
我在单元测试中遇到的例外是:
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
以前有人见过这个吗?
发布于 2017-05-04 15:00:06
在2.0.4版的PDFBox库中已经修复了这个问题
https://stackoverflow.com/questions/39831376
复制相似问题