使用 PDFBOX 填写 PDF 表单中的多个字段并在填写后锁定编辑 pdf 文档

Posted

技术标签:

【中文标题】使用 PDFBOX 填写 PDF 表单中的多个字段并在填写后锁定编辑 pdf 文档【英文标题】:Filling multiple fields in PDF form using PDFBOX and Lock editing of pdf document after filling 【发布时间】:2019-07-26 20:17:20 【问题描述】:

我是PDF BOX的新手,需要在PDF表格中填写信息,其中有部分和字段名称:

PDF 表格包含

的信息

名称 和框来填写信息

地址 和框来填写信息

城市 框来填写信息。

如果我有姓名、地​​址和城市信息,如何使用 pdf 框将其填写到 pdf 表格中。

已使用 PDFbox 中的示例,acroForm 仅填充示例字段,如何在特定字段中填充特定信息。

填完后如何锁定。

String formTemplate = "C:/FillFormField.pdf";

      PDDocument pdfDocument = PDDocument.load(new File(formTemplate))

        // get the document catalog
        PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();

        // as there might not be an AcroForm entry a null check is necessary
        if (acroForm != null)
        
            // Retrieve an individual field and set its value.
            PDTextField field = (PDTextField) acroForm.getField( "sampleField" );
            field.setValue("Text Entry");

            // If a field is nested within the form tree a fully qualified name
            // might be provided to access the field.
            field = (PDTextField) acroForm.getField( "fieldsContainer.nestedSampleField" );
            field.setValue("Text Entry");
        

        // Save and close the filled out form.
        pdfDocument.save("C:/FillFormField.pdf");

目前没有错误以上代码正在努力填写一些垃圾字段。

需要用名称信息的框信息准确填写名称 地址与地址信息的框信息

【问题讨论】:

有什么问题?您是否需要一种查找字段名称的方法?如果是这样,请使用 PDFDebugger 打开 PDF 并将鼠标悬停在该字段上。还要确保使用最新版本 2.0.16。 重新加锁,调用setLocked()即可。 感谢您的回复@TilmanHausherr 会努力解决这个问题,如果我能成功的话,请告诉您 【参考方案1】:

我可以使用 PDFBOX 中的 PDF Debugger 来做到这一点。

使用CMD提示获取文件结构

java -jar pdfbox-app-1.8.10.jar PDFDebugger yourfile.pdf

请从 apache PDF 框中获取上述 jar 文件。

看到结构后,找到字段名称。

【讨论】:

使用 PDFDebugger 1.8.10 很难做到。【参考方案2】:

出于我的锁定目的,我不需要使用加密方法。所以使用了 Acroform Flatten PDF 方法。

// flatten() 方法以只读方式保存 PDF acroForm.flatten();

【讨论】:

以上是关于使用 PDFBOX 填写 PDF 表单中的多个字段并在填写后锁定编辑 pdf 文档的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pdfbox 用特定字体填写 PDF 表单?

使用 PDFBox 为扁平化 PDF 表单嵌入字体

PDFBox:通过重复添加包含表单的单页模板来填写 PDF

PDFBox 字段值在展平后无法显示

PDFBOX 2.0.18 - 如何遍历 PDF 页面并检索特定字段

PDFBox 设置字段值不起作用