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

无法使用PDFBOX读取PDF文件

龙成仁
2023-03-14

我正在尝试使用JAVA填写PDF表单,但当我尝试使用下面的代码获取字段时,列表为空。

PDDocument pdDoc = PDDocument.load(filename);
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm();
List<PDField> field = pdform.getFields();

然后我尝试使用PDFStripper读取文件

PDFTextStripper stripper = new PDFTextStripper();
System.out.println(stripper.getText(pdDoc));

输出如下

“请稍候。。。

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

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

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

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

但我可以手动打开文件并填充字段。我也尝试过其他工具,比如iText。但我还是没能拿到田地。如何解决此问题?

共有1个答案

鞠边浩
2023-03-14

也许现在回答太晚了,但无论如何,为什么不回答呢。如果pdf文件具有XFA结构,则可以得到空列表。

PDDocument pdDoc = PDDocument.load(filename);
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm();
List<PDField> field = pdform.getFields();

使用这些代码行开始使用pdf:

PDXFA xfa = pdform.getXFA();
Document xfaDocument = xfa.getDocument();
NodeList elements = xfaDocument.getElementsByTagName( "SomeElement" );
 类似资料:
  • 我们正在尝试读取PDF并动态填充其中的值。根据传入的请求,我们运行一些规则,导出要使用的PDF,然后动态地向其填充值。我们使用的是ApachePDFBox版本2.0.11,由于某些原因,我们在使用特定的PDF模板时遇到了问题。我们无法读取此特定模板的某些字段,生成的PDF不完整。想知道是否与原始PDF本身有关。下面是我们用来读取字段并填充字段的代码片段。 当我们试图打印每个字段名时,我们发现超过3

  • 问题内容: 如何使用PDFBox从PDF文档中读取特定页面(具有页码)? 问题答案: 这应该工作: 如本教程的“ 书签”部分中所示 更新2015年,版本2.0.0快照 似乎已将其删除并放回(?)。 getPage 在2.0.0 javadoc中。要使用它: 该 getAllPages 方法已更名 GETPAGES

  • 主要内容:从现有的PDF文档中提取文本,第4步:关闭文档,示例在前一章中,我们已经学习了如何将文本添加到现有的PDF文档。 在本章中,我们将学习如何从现有PDF文档中读取文本。 从现有的PDF文档中提取文本 提取文本是的主要功能之一。 可以使用类的方法提取文本。 这个类从给定的PDF文档中提取所有文本。 以下是从现有PDF文档中提取文本的步骤。 第1步:加载现有的PDF文档 使用类的静态方法加载现有的PDF文档。 此方法接受一个文件对象作为参数,因为这是一个

  • 问题内容: 我想使用Apache PDFBox从给定的PDF文件中提取文本。 我写了这段代码: 但是,出现以下错误: 我在类路径中添加了pdfbox-1.8.5.jar和fontbox-1.8.5.jar。 编辑 我添加到程序的开头。 我运行了它,然后出现了与上述相同的错误,并且未出现在控制台中。 因此,我认为我对类路径或其他东西有疑问。 谢谢。 问题答案: 我执行了您的代码,它工作正常。也许您的

  • 我试图使用PDFBox修改PDF文档的内容。我使用了这个例子,但观察到我的PDF文件的文本在字符级别(或更糟)被分割。例如,一个字符串,被分割成: (通过在上述代码中打印进行检查时)。据我所知,文件中只有拉丁字符,编码也是ISO-8859-1。有什么想法吗? 当做 萨利

  • 我是python编程/数据科学家领域的新手。我使用Pycharm和MacOs。出于学习目的,我从Kaggle下载了一些CSV文件,我总是能够将它们加载到Pycharm中。但实际上我无法从我的工作环境中加载csv文件,令人惊讶的是,我可以使用R函数'fread'加载该文件,但我的目标是将其加载到python中。请在下面查找代码和错误: 代码: 错误: “/Users/oscargonzalez-ll