通过 iText returns 奇怪字符提取 PDF 文本

PDF text extraction via iText returns strange characters

我正在使用 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文档

一些银行创建包含机密信息的文档。为了避免他们的文档被解析并提取该文档,他们故意创建一个包含不正确信息的 CMap。一个字符链接到一个字形(并且字形正确呈现),但是还有一个字符到 UNICODE 符号的映射,并且该映射是故意错误的(因此无法提取内容)。

我在这些电影中展示了此类文件的示例:

2。 iText 是个问题

您使用的版本日期为 2012 年 11 月 2 日。在接下来的(几乎)三年里,我们修复了许多错误。如果您升级到 iText 5.5.7,也许您的问题已经解决了。

如果升级到 iText 5.5.7 没有解决问题并且 PDF 也不是问题,则您可能遇到了 iText 中的错误。如果您在商业环境中使用 iText,那么您就是 iText Software 的客户;在这种情况下,请通过仅供客户使用的封闭式票务系统联系 iText 的支持人员。