填寫 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 文檔中保留擴展權限。如有任何疑慮或問題,請隨時通過 免費支持論壇 與我們聯繫。

也可以看看