itext:文本提取示例不起作用

itext: Textextracting example not working

我想从 PDF 文档页面中提取文本,我正在使用 itext。我使用了他们 website:

中的示例代码
PdfReader reader = new PdfReader(pathToFile);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
TextExtractionStrategy strategy = parser.processContent(page, new SimpleTextExtractionStrategy());

方法processContent给了我一个NullPointerException。我做错了什么?

这是我将 5.5.0 版与 this 文件一起使用时得到的堆栈跟踪:

java.lang.NullPointerException
at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:82)
at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:105)
at org.languageresources.PDFExtraktor.extractTextFromPage(PDFExtractor.java:100)

鉴于您提供的代码片段和示例文档,我尝试重现该问题但无济于事,文本提取工作正常。

此外,给出的堆栈跟踪:

java.lang.NullPointerException
at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:82)
at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:105)
at org.languageresources.PDFExtraktor.extractTextFromPage(PDFExtractor.java:100)

与所谓的 5.5.0 版本不匹配,因为该版本中的 PdfReaderContentParser.java:82 是一个空行并且 PdfReaderContentParser.java:105 不存在:当时该文件只有 85 行大小。


不过,假设您使用的是当前版本 5.5.9,堆栈跟踪是有意义的,在那个版本中 PdfReaderContentParser.java:82 是这些行中的第二行:

PdfDictionary pageDic = reader.getPageN(pageNumber);
PdfDictionary resourcesDic = pageDic.getAsDict(PdfName.RESOURCES);

pageDic确实可以null如果没有页面pageNumber.

因此,请检查有问题的页码 page 是否介于 1 和 reader.getNumberOfPages() 之间。