java - 通过 iText 提取 PDF 文本返回奇怪的字符

标签 java pdf itext

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

相关文章:

web-services - WORD 和 PDF 到文本 Web 服务

matlab - 将饼图另存为 pdf 时出现未知白线

c# - iTextSharp 将预先存在的 PDF 作为图层添加到另一个 PDF

java - iText 章节内的新页面

java - session 结束后可以安全地存储对实体 Bean 的引用吗?

java - 我的应用程序正在显示图像网址。如何下载图像以便它可以显示在我的应用程序上

删除由 pdf() 创建的临时文件

java - React-Native 无法在 Android 上构建

Java代码在Java环境中运行正常,但在Android环境中抛出错误

java - 从使用 iText 动态延续文件模板的 java 代码生成 PDF