#java #pdfbox
#java #pdfbox
Вопрос:
Я использую PDFBox для извлечения текста из нескольких документов PDF и во время запуска моего набора модульных тестов (через gradle) Я получаю периодические сбои, вызванные NullPointerException — мое базовое предположение теперь заключается в том, что это вызвано несколькими потоками, пытающимися одновременно загрузить шрифт в кэш font dictionaryanry.
Я знаю, как указано в часто задаваемых вопросах, что PDFBox не является потокобезопасным, но впечатление, которое я получил от этого и этого обсуждения здесь, заключается в том, что оно относится конкретно к нескольким потокам, обращающимся к документу одновременно, и комментарий, похоже, предполагает, что ожидается, что кэш 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. Пожалуйста, повторите тестирование с 2.0.3
2. Спасибо @TilmanHausherr — я протестировал новую версию и столкнулся с той же проблемой. Я только что создал заявку на улучшение, которое, я думаю, решает проблему — issues.apache.org/jira/browse/PDFBOX-3521
Ответ №1:
Это было исправлено в библиотеке PDFBox с версии 2.0.4
Подробности в исходном билете здесь: https://issues.apache.org/jira/browse/PDFBOX-3521