Я работаю над приложением в Java 8 для обработки текста из PDF-файлов.Я использую PDFbox версии 2.0.12 в проекте Maven.Я использую следующий метод для извлечения текста из нескольких PDF-файлов:
for(File file : fileEntry){
PDDocument pdd = PDDocument.load(file);
PDFTextStripper stripper = new PDFTextStripper();
String text = stripper.getText(pdd);
System.out.println(text);
}
Однако, в этом конкретном файле:
http://www.o -cha.net / english /cup / pdf / 29.pdf
Я получаю следующее исключение:
Exception in thread "main" java.lang.UnsupportedOperationException: TTF fonts do not have a CFF table
at org.apache.fontbox.ttf.OpenTypeFont.getCFF(OpenTypeFont.java:56)
at org.apache.pdfbox.pdmodel.font.PDCIDFontType0.<init>(PDCIDFontType0.java:136)
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createDescendantFont(PDFontFactory.java:121)
at org.apache.pdfbox.pdmodel.font.PDType0Font.<init>(PDType0Font.java:192)
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:83)
at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:146)
at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:848)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:503)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:477)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:150)
at org.apache.pdfbox.text.LegacyPDFStreamEngine.processPage(LegacyPDFStreamEngine.java:139)
at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:391)
at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:319)
at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:266)
at org.apache.pdfbox.text.PDFTextStripper.getText(PDFTextStripper.java:227)
Я не уверен, но я считаю, что это потому, что PDF использует некоторыешрифт, с которым PDFbox не знаком.Я не уверен, что это так, потому что, насколько мне известно, метод getText
класса PDFTextStripper должен игнорировать все стили.Документация гласит:
Этот класс возьмет документ в формате PDF и выделит весь текст и проигнорирует форматирование и т. Д.
Если это так, почемуя получаю это исключение?
Спасибо заранее.