当前位置: 首页 > 知识库问答 >
问题:

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

彭华皓
2023-03-14

我正在尝试用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查看器可能无法显示此类文档。

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

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

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

我发现这个错误是因为xfa pdf文档而发生的。但是我不知道我的pdf文档的xfa格式。所以请让我知道如何了解xfa格式。

谁来帮帮我。谢谢你!

共有1个答案

子车勇锐
2023-03-14

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

OP引用的文本,

请稍等...

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

...

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

XFA表单是在PDF中描述表单的另一种方式。与AcroForm方式不同,XFA表单仅使用PDF作为信封,其中包含XML流,以与任何其他PDF结构无关的方式描述表单的属性、行为和值。

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

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

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

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

 类似资料:
  • 请帮帮我,我是一个完全的傻瓜,当涉及到火花和Haddop一般。我的代码如下所示: 我的Spark集群作为一个集群部署在10.1.50.165中,运行RHEL6,当我运行这段简单的代码时,在尝试读取json文件时,我遇到了如下异常:

  • 我正在尝试使用JAVA填写PDF表单,但当我尝试使用下面的代码获取字段时,列表为空。 然后我尝试使用PDFStripper读取文件 输出如下 “请稍候。。。 如果此消息最终未被文档的正确内容替换,则PDF查看器可能无法显示此类文档。 您可以通过访问升级至最新版本的Adobe Reader for Windows®、Mac或Linux®http://www.adobe.com/go/reader_d

  • 问题内容: 我有一个我正在用来显示一些数据。假设我有大约200行数据。我能够通过使用生成iText library, 但是我面临的问题是未生成所有行。如何动态添加,以便生成所有行?请查看下面的代码,请在这里帮助我。 问题答案: 好的,这是一个非常基本的示例…… JTable通过各种print方法,已经支持打印了,基本上,这归结为获取JTable Printable 接口实例并将其传递给打印API,

  • 我使用iTextPDF生成PDF,从一些文本输入中获取数据。 当我运行应用程序并创建第一个PDF时,它会按预期生成。 然后我改变一些值并生成另一个值,这就是问题所在。第一个PDF上显示的最后一个条目被打印在第二个生成的PDF的第一个条目的顶部。 不知道为什么会这样?它是保存到缓冲区还是什么的,不是很确定。 下面是生成PDF的代码: 输出请见附件图像,第一个显示第一个文件生成,第二个显示第二个文件生

  • 问题内容: 我有一个文本文件。我想从一行到另一行检索内容。例如,文件可以是200K行。我想从第78行到第2735行读取内容。由于文件可能很大,所以我不想将整个内容读取到内存中。 问题答案: 这是一个可能的解决方案的开始:

  • 我想在java8中读取文本文件,我得到错误“类型不匹配:无法从FileReader转换到Reader”。如果我将Reader类更改为FileReader,则会出现错误“构造函数BufferedReader(FileReader)未定义”,我的语句是 请建议