【发布时间】:2023-01-17 20:46:58
【问题描述】:
我有一个 pdf 文件,它有几个可以填充值的表单字段,如文本字段、单选框等。
我正在尝试通过阅读 pdf 以编程方式操作这些字段。我尝试过像 PDFBox、iTextPdf 等库。但每次我看到字段列表返回空。我的基本代码是:
val template = new File(....)
val doc = PDDocument.load(template)
val docCatalog = doc.getDocumentCatalog
val acroForm = docCatalog.getAcroForm
println("Fields:"+ acroForm.getFields)
字段列表出来是空的,即使文件确实有字段。
我在这里错过了什么?
【问题讨论】:
-
你的PDF有没有交互的领域或只是看起来像领域的东西?如果它们是交互式的,那么表单定义是 XFA 还是 AcroForm?
-
我可以与这些领域互动。但我不确定 XFA 与 Acroform。有什么简单的方法可以检查吗?
-
我认为它是 XFA。当我检查 itextpdf PdfReader 对象时,我在其中看到一个名为 XFA 的属性,并且它是非空的。
-
好的,许多 PDF 库不支持纯 XFA 表单,特别是因为它本质上与 PDF 机制根本无关,它是纯 XML 表单定义。 PDF 规范在 2017 年弃用了 PDF 中的 XFA。
-
@Mandroid 你能把这个写成一个答案吗?这将帮助其他人快速找到解决方案......