Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过iText提取PDF文本返回奇怪字符_Java_Pdf_Itext - Fatal编程技术网

Java 通过iText提取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(

我正在使用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();
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版解决了此问题