通过 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 的支持人员。
我正在使用 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 的支持人员。