我想明智地从PDF文档中提取文本,我正在使用itext。我使用了website:
中的示例代码processContent
方法NullPointerException
为我提供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和this文件时得到的堆栈跟踪:
Hash#each_pair
答案 0 :(得分:0)
鉴于您提供的代码片段和示例文档,我试图重现该问题,但无济于事,文本提取工作正常。
此外,堆栈跟踪给出:
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()
之间。