Java 通过iText提取PDF文本返回奇怪字符
我正在使用itext 5.3.4从PDF文件中提取文本。我使用的代码如下所示:Java 通过iText提取PDF文本返回奇怪字符,java,pdf,itext,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(
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();
PdfReaderContentParser=新的PdfReaderContentParser(pdfReader);
文本抽取策略;
StringBuffer sb=新的StringBuffer();
对于(int i=1;i我发现两种可能的原因:
1.PDF文档是问题所在
一些银行使用机密信息创建文档。为了避免对其文档进行分析和提取,他们故意使用不正确的信息创建CMap。字符链接到标志符号(并且标志符号正确呈现),但也有一个字符到UNICODE符号的映射,该映射是故意错误的(因此无法提取内容)
我在这些电影中展示了这样一个文件的示例:
2.iText是问题所在
您正在使用2012年11月2日的版本。在随后的(几乎)三年中,我们修复了许多错误。如果您升级到iText 5.5.7,您的问题可能已经解决
如果升级到iText 5.5.7无法解决问题,并且PDF不是问题所在,则您可能在iText中遇到了错误。如果您在商业环境中使用iText,则您是iText软件的客户;在这种情况下,请通过仅面向客户的封闭式票务系统与iText的支持部门联系。测试的第一件事——别担心,这很简单——是用Acrobat Reader复制文本并粘贴到其他地方。如果Acrobat Reader不能忠实地阅读文本,问题很可能出在PDF中。还有一件事要做:请更新。5.3.x版本是文本提取代码发生变化的时期。请参阅以获取类似的信息此行为的问题和可能的解释。升级到itext的5.5.7版解决了此问题,升级到itext的5.5.7版解决了此问题