我正在使用 itext 5.3.4 从 PDF 文件中提取文本。我用来执行此操作的代码如下:
PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);
TextExtractionStrategy strategy;
StringBuffer sb = new StringBuffer();
for (int i = 1; i <= pdfReader.getNumberOfPages(); i++)
{
strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
sb.append(strategy.getResultantText());
}
String text = sb.toString();
但是,对于特定的 PDF,ë 将作为 ° 返回。知道为什么会发生这种情况以及可以采取什么措施吗?这是 itext 库中的错误还是 PDF 构建过程中出现错误?
感谢您的帮助。
最佳答案
我发现有两个可能的原因:
<强>1。 PDF文档是问题
一些银行创建包含 secret 信息的文档。为了避免他们的文档被解析并提取该文档,他们故意创建一个包含不正确信息的 CMap。字符链接到字形(并且字形正确呈现),但还有字符到 UNICODE 符号的映射,并且该映射是故意错误的(因此无法提取内容)。
我在这些电影中展示了此类文件的示例:
<强>2。 iText 是问题
您使用的版本是 2012 年 11 月 2 日开始的。在接下来的(几乎)三年里,我们修复了许多错误。如果您升级到 iText 5.5.7,也许您的问题已经解决。
如果升级到 iText 5.5.7 无法解决问题,并且 PDF 不是问题,则您可能在 iText 中遇到了错误。如果您在商业环境中使用 iText,您就是 iText Software 的客户;在这种情况下,请通过仅供客户使用的封闭式票务系统联系 iText 的支持人员。
关于java - 通过 iText 提取 PDF 文本返回奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992113/