【问题标题】:PDFBox, iTextPdfPDF: pdf form returning no fieldsPDFBox、iTextPdfPDF:pdf 表单不返回任何字段
【发布时间】: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 你能把这个写成一个答案吗?这将帮助其他人快速找到解决方案......

标签: itext pdfbox


【解决方案1】:

事实证明,我使用的输入 pdf 文件实际上是基于 XFA 的文件而不是 acroform,而且大多数库都不支持 XFA。

所以我们需要将文件转换为 acroform。

另一种方法是使用aspose。它还提供 API 来填充 XFA 表单。

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    相关资源
    最近更新 更多