无法读取Java中pdf文件的生成文本

时间:2019-04-21 14:57:03

标签: java pdfbox pdf-reader xfa

我正在尝试用Java阅读文本,但效果不佳。 这是我的代码

PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
File pdfFile = new File("1.pdf");
PDFParser parser = new PDFParser(new RandomAccessFile(pdfFile,"rw"));
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
pdfStripper.setStartPage(1);
pdfStripper.setEndPage(5);
String parsedText = pdfStripper.getText(pdDoc);
System.out.println(parsedText);

但是这样的结果

请稍候...

如果此消息最终没有被文档的正确内容取代,则您的PDF 查看器可能无法显示此类文档。

您可以通过以下方式升级到适用于Windows®,Mac或Linux®的Adobe Reader的最新版本: 访问http://www.adobe.com/go/reader_download

有关Adobe Reader的更多帮助,请访问http://www.adobe.com/go/acrreader

Windows是Microsoft Corporation在美国和/或其他国家的注册商标或商标。 Mac是商标 Apple Inc.在美国和其他国家/地区注册的公司。 Linux是Linus Torvalds在美国和其他国家/地区的注册商标 国家。

我发现由于xfa pdf文档而发生此错误。 但是我不知道我的pdf文档的xfa格式。 因此,请让我知道如何了解xfa格式。

请有人帮我。 谢谢!

1 个答案:

答案 0 :(得分:1)

总结评论中所说或暗示的内容...

OP引用的文本,

  

请稍候...

     

如果此消息最终没有被文档的正确内容替代,则您的PDF查看器可能无法显示此类文档。

     

...

是单个PDF页面的内容,通常是Adobe软件以纯XFA格式将其放入PDF。

XFA表单构成了描述PDF中表单的一种替代方法。与AcroForm方式相反,XFA表单仅将PDF用作信封,并以与其他PDF结构无关的方式描述表单的属性,行为和值的XML流。

因此,许多PDF处理器仅对XFA表单提供基本支持(或根本不提供),主要例外是(显然)Adobe产品。

结果,在当前的PDF规范ISO 32000-2中,XFA被标记为不推荐使用。


对于PDFBox,XFA支持仅限于检索XFA XML数据的功能。使用PdfTextStripper和相关类进行文本提取仅适用于常规PDF内容,因此只能检索OP报告的文本。

要访问XFA表单的内容,可以使用PDAcroForm.getXFA()检索XFA资源。