使用 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 文档的主要内容,如果未能解决你的问题,请参考以下文章