填写 PDF 表单 Java

在这些现代时代,使用表单收集了大量数据,在这种情况下值得一提的是可填写的 PDF 表单。它们是收集和整理信息的有效方式。此外,可填写的 PDF 表格现在正被不同的机构用作标准。例如,一些法院或采购公司可以有效地使用可填写的 PDF 表格来标准化他们的程序。对于创建此类应用程序,Aspose.PDF for Java API 是最合适的 API。想知道为什么?让我们探索以下以编程方式处理 PDF 表单的用例。

安装

您可以前往 New Releases 部分,您可以在其中配置 API 以丰富您的 Java 应用程序并使其能够处理 PDF 文档,或者您可以在 Maven 应用程序中定义依赖项,如下所示:

存储库:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository

依赖:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.7</version>
</dependency>

成功配置 API 后,让我们继续以下用例:

使用 Java 创建可填写的 PDF 表单

您可以按照以下步骤在 Java 应用程序中创建可填写的 PDF 表单:

  1. 创建带有空白页的 PDF 文件
  2. 在页面上添加 TextBox 字段和 RadioButton 字段
  3. 保存输出 PDF 文件

下面的代码片段展示了如何使用 Java 从头开始创建可填写的 PDF 表单:

com.aspose.pdf.Document pdfdoc = new com.aspose.pdf.Document();
com.aspose.pdf.Page page = pdfdoc.getPages().add();
TextBoxField nameBox = new TextBoxField(pdfdoc, new com.aspose.pdf.Rectangle(275, 740, 440, 770));
nameBox.setPartialName("nameBox1");
nameBox.getDefaultAppearance().setFontSize(10);
nameBox.setMultiline(true);
com.aspose.pdf.Border nameBorder = new com.aspose.pdf.Border(nameBox);
nameBorder.setWidth(1);
nameBox.setBorder(nameBorder);
nameBox.getCharacteristics().setBorder(java.awt.Color.BLACK);
nameBox.setColor(com.aspose.pdf.Color.fromRgb(Color.RED));
TextBoxField mrnBox = new TextBoxField(pdfdoc, new com.aspose.pdf.Rectangle(275, 718, 440, 738));
mrnBox.setPartialName("Box1");
mrnBox.getDefaultAppearance().setFontSize(10);
com.aspose.pdf.Border mrnBorder = new com.aspose.pdf.Border(mrnBox);
mrnBorder.setWidth(1);
mrnBox.setBorder(mrnBorder);
mrnBox.getCharacteristics().setBorder(java.awt.Color.BLACK);
mrnBox.setColor(com.aspose.pdf.Color.fromRgb(Color.RED));
// 将表单域添加到 PDF 文档的第一页            
pdfdoc.getForm().add(nameBox, 1);
pdfdoc.getForm().add(mrnBox, 1);

//在 PDF 中的特定位置坐标处添加单选按钮
com.aspose.pdf.Table table = new com.aspose.pdf.Table();
//在这里设置位置
table.setLeft(200);
table.setTop(300);
table.setColumnWidths("120");
page.getParagraphs().add(table);
com.aspose.pdf.Row r1 = table.getRows().add();
com.aspose.pdf.Row r2 = table.getRows().add();
com.aspose.pdf.Cell c1 = r1.getCells().add();
com.aspose.pdf.Cell c2 = r2.getCells().add();
com.aspose.pdf.RadioButtonField rf = new com.aspose.pdf.RadioButtonField(page);
rf.setPartialName("radio");
pdfdoc.getForm().add(rf, 1);
com.aspose.pdf.RadioButtonOptionField opt1 = new com.aspose.pdf.RadioButtonOptionField();
com.aspose.pdf.RadioButtonOptionField opt2 = new com.aspose.pdf.RadioButtonOptionField();
opt1.setOptionName("Yes");
opt2.setOptionName("No");
opt1.setWidth(15);
opt1.setHeight(15);
opt2.setWidth(15);
opt2.setHeight(15);
rf.add(opt1);
rf.add(opt2);
opt1.setBorder(new com.aspose.pdf.Border(opt1));
opt1.getBorder().setWidth(1);
opt1.getBorder().setStyle(com.aspose.pdf.BorderStyle.Solid);
opt1.getCharacteristics().setBorder(java.awt.Color.BLACK);
opt1.getDefaultAppearance().setTextColor(java.awt.Color.RED);
opt1.setCaption(new com.aspose.pdf.TextFragment("Yes"));
opt2.setBorder(new com.aspose.pdf.Border(opt1));
opt2.getBorder().setWidth(1);
opt2.getBorder().setStyle(com.aspose.pdf.BorderStyle.Solid);
opt2.getCharacteristics().setBorder(java.awt.Color.BLACK);
opt2.getDefaultAppearance().setTextColor(java.awt.Color.RED);
opt2.setCaption(new com.aspose.pdf.TextFragment("No"));
c1.getParagraphs().add(opt1);
c2.getParagraphs().add(opt2);
pdfdoc.save(dataDir + "Fillable_PDF_Form.pdf");

使用 Java 填充、修改或删除现有 PDF 中的表单域

我们已经学会了从头开始创建一个新的可填充 PDF 文件。让我们继续处理现有 PDF 文档的场景:

i) 使用 Java 在现有 PDF 文件中填写表单字段

就像我们在上面的示例中创建了 PDF 表单一样,让我们继续处理同一个文档并使用 Java 以编程方式填写表单字段。您可以通过以下步骤填写创建的表格:

  1. 加载输入文件
  2. TextBox 字段中填充值
  3. 通过选择一个选项来填写 RadioButton 字段
  4. 保存 PDF 表格

下面的代码片段展示了如何使用 Java 填写可填写的表单:

// 打开文档
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fillable_PDF_Form.pdf");

// 获取字段
TextBoxField textBoxField1 = (TextBoxField) pdfDocument.getForm().get("nameBox1");
TextBoxField textBoxField2 = (TextBoxField) pdfDocument.getForm().get("Box1");
// 填写表单字段的值
textBoxField1.setValue("A quick brown fox jumped over a lazy dog.");
textBoxField2.setValue("A quick brown fox jumped over a lazy dog.");

// 获取单选按钮字段
RadioButtonField radioField = (RadioButtonField) pdfDocument.getForm().get("radio");
// 指定组中单选按钮的索引
radioField.setSelected(1);

dataDir = dataDir + "Fill_PDF_Form_Field.pdf";
// 保存更新的文档
pdfDocument.save(dataDir);

ii) 使用 Java 修改 PDF 文档中的表单域

有时我们需要编辑或更新 PDF 表单中的字段值。您可以通过以下步骤轻松编辑可填写的 PDF 表单:

  1. 初始化输入 PDF
  2. 通过名称获取对表单字段的引用
  3. 编辑 PDF 表单
  4. 保存编辑的 PDF 表单

下面的代码片段显示了如何使用 Java 更新或编辑可填写的 PDF 文件:

// 打开文档
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fill_PDF_Form_Field.pdf");
// 获取一个字段
TextBoxField textBoxField = (TextBoxField) pdfDocument.getForm().get("nameBox1");
// 修改字段值
textBoxField.setValue("Changed Value");
textBoxField.setReadOnly(true);
dataDir = dataDir + "ModifyFormField.pdf";
// 保存更新的文档
pdfDocument.save(dataDir);

iii) 使用 Java 删除现有 PDF 文件中的表单域

您可以在 Java 应用程序中轻松移除或删除表单域。您可以按照以下步骤操作:

  1. 初始化 PDF 表单
  2. 使用其名称删除表单域
  3. 保存更新的 PDF 表单

下面的代码片段显示了如何使用 Java 从 PDF 表单中删除表单域:

// 打开文档
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fill_PDF_Form_Field.pdf");
// 按名称删除特定字段
pdfDocument.getForm().delete("nameBox1");
dataDir = dataDir + "Delete_Form_Field.pdf";
// 保存修改的文档
pdfDocument.save(dataDir);

使用 Java 保留 PDF 表单的扩展权限

您可能会注意到某些 PDF 表单具有扩展权限。它们用于避免修改原始内容,并且只允许填写表格。 PDF 文件的扩展权限可能会受到影响

您填写这样的表格并将其保存在磁盘的不同位置。因此,我们需要通过以下步骤逐步保存此类文件:

  1. 初始化 PDF 表单
  2. 填写字段
  3. 保存填写的 PDF 文档

下面的代码片段显示了如何在使用 Java 填写 PDF 表单时保留扩展权限:

// 实例化文档实例
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(dataDir + "Fill_PDF_Form_Field.pdf");
// 从所有字段中获取值
for (com.aspose.pdf.Field formField : pdfDocument.getForm().getFields())
{
    // 如果字段全名包含nameBox1,则执行操作
    if (formField.getFullName().contains("nameBox1"))
    {
        // 将表单字段转换为 TextBox
        TextBoxField textBoxField = (TextBoxField) formField;
        // 修改字段值
        textBoxField.setValue("Preserve Extended Features");
    }
}
// 保存更新的文档
pdfDocument.save();

使用 Java 在 PDF 表单中使用 JavaScript

您可以使用 Javascript 和 Aspose.PDF for Java 填写可填写的 PDF 表单字段。您应该遵循以下步骤:

  1. 加载 PDF 文档
  2. 在特定页面位置添加字段
  3. 为文档设置 JavaScript 和打开操作保存 PDF 文件

以下代码片段展示了如何在可填写的 PDF 表单中使用 JavaScript:

com.aspose.pdf.Document pdfdoc = new com.aspose.pdf.Document();
pdfdoc.getPages().add();
TextBoxField textBoxField = new TextBoxField(pdfdoc.getPages().get_Item(1), new com.aspose.pdf.Rectangle(85, 750, 215, 770));
textBoxField.setPartialName("textbox1");
textBoxField.setValue("Text Box");
//TextBoxField.Border = new Border();
com.aspose.pdf.Border border = new com.aspose.pdf.Border(textBoxField);
border.setWidth(2);
border.setDash(new com.aspose.pdf.Dash(1, 1));
textBoxField.setBorder(border);
textBoxField.getDefaultAppearance().setFontSize(10);
textBoxField.setColor(com.aspose.pdf.Color.fromRgb(java.awt.Color.GREEN));
// 向文档添加字段
pdfdoc.getForm().add(textBoxField, 1);
String JS = "var w = this.getField('" + textBoxField.getPartialName() + "'); var today = new Date(); w.value = today.toLocaleString();";
pdfdoc.setOpenAction(new com.aspose.pdf.JavascriptAction(JS));
pdfdoc.save(dataDir + "JS_Form.pdf");

结论

我们已经学习了如何创建可填写的 PDF 表单,以及如何使用 Java 环境填写或编辑表单域。此外,除了在 PDF 文档操作上使用 JavaScript 之外,我们还探索了保留 PDF 文档中的扩展权限。如有任何疑虑或问题,请随时通过 免费支持论坛 与我们联系。

也可以看看