【问题标题】:itext: Textextracting example not workingitext:文本提取示例不起作用
【发布时间】:2016-06-20 09:46:32
【问题描述】:

我想明智地从 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)

【问题讨论】:

  • 在不分享更多信息的情况下,不要期望得到这个问题的答案。网站上的代码适用于 iText 5.5.9 和测试文件。您使用的是哪个版本?您要解析哪个 PDF?如果没有这两个问题的答案,您的问题就无法回答。
  • 感谢您的快速回复。我添加了有关堆栈跟踪、文件和我正在使用的版本的信息。

标签: itext


【解决方案1】:

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

此外,给出的堆栈跟踪:

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);

如果没有页面pageNumberpageDic 确实可以是null

因此,请检查page(相关页码)是否介于 1 和 reader.getNumberOfPages() 之间。

【讨论】:

  • 你说对了两点:我使用的是 5.5.9 版(抱歉打错了),我的页码不在 1 和最大页数之间。我假设数字从 0 开始。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
  • 2015-09-22
  • 2018-06-03
  • 1970-01-01
  • 2011-10-09
相关资源
最近更新 更多