IRONSOFTWAREHOME

如何在 Java 中填寫 PDF 表單(教程)

Curtis Chau
Curtis Chau
Updated: 2026年6月29日

IronPDF 使 Java 開發者能夠程式化地填寫 PDF 表單,方法是載入現有的 PDF,使用 getForm() 存取表單欄位,使用 setFieldValue() 設定值,並保存填寫完的文件。 這使得在商業應用中自動化文件處理變得簡單直接。

快速開始:在 Java 中填寫 PDF 表單
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/quickstart.java
// 1. 將 IronPDF 依賴項添加到您的 Maven 專案中
// 2. 載入您的 PDF 表單
PdfDocument form = PdfDocument.fromFile("form.pdf");
// 3. 填寫表單欄位
form.getForm().setFieldValue("firstname", "John");
// 4. 保存填寫完的 PDF
form.saveAs(Paths.get("filled_form.pdf"));
Text

本文介紹了如何在 Java 中程式化地填寫 PDF 表單。 一個常見場景是應用程式通過 UI 收集使用者資訊,這些資訊需要以 PDF 格式保存以便存檔、合規或後續處理。

在獲取使用者輸入後,應用程式通常需要將這些資料直接注入預先存在的 PDF 模板中。 多個 Java PDF 程式庫可以處理這項任務,包括 Apache PDFBox、iText 和 IronPDF。 本指南解釋了如何使用 IronPDF 填寫帶有文字欄位、複選框、單選按鈕和下拉列表的互動表單。 對於構建相關文件工作流程的開發人員,請參閱在 Java 中從頭建立 PDF 表單 的指南。

什麼是 IronPDF for Java?

IronPDF 是一個 Java PDF 程式庫,用於建立、編輯和操作 PDF 文件。 它能夠整合到任何基於 Maven 的 Java 專案中,並提供簡潔的 API,使常見的 PDF 任務能夠以最少的樣板程式碼來實現。

該程式庫涵蓋了整個 PDF 生命週期:將 HTML 渲染為 PDF、讀寫表單資料、新增數位簽名、應用安全設置、壓縮文件和列印。 在表單處理中,IronPDF 提供了對 PDF 文件中每一個欄位型別的程式化存取,同時保留原始格式。 這使得它非常適合批量表單處理、使用資料庫記錄預先填充模板或將表單填寫與較大的 Java 工作流程整合。 請參閱 IronPDF Java API 參考 以獲取完整的可用類和方法列表。

如何在 Maven 專案中安裝 IronPDF?

將以下依賴項塊新增到您的 pom.xml 文件中以安裝 IronPDF for Java。

打開 pom.xml 並將依賴項插入 <dependencies> 元素中,然後運行 mvn install 以下載程式庫。 可用的版本列於 Maven Central。

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/maven-dependency.xml
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2024.9.1</version>
</dependency>
XML

安裝後,在您的 Java 類中導入 com.ironsoftware.ironpdf.PdfDocument 和 com.ironsoftware.ironpdf.render.ChromePdfRenderOptions 以存取表單填寫 API。 要獲取在雲端平臺上部署的指南,請參閱 AWS、Azure 和 Google Cloud 的指南。

提示: 在 Docker 或容器化環境中使用 IronPDF 時,在首次 PdfDocument 調用之前設置 IronPdf.licenseKey 系統屬性,以避免在運行時進行許可證驗證延遲。

如何在 Java 中使用 HTML 建立並填寫 PDF 表單?

產生一致結構且可填寫的 PDF 最可靠的方法是用 HTML 定義表單並用 IronPDF 渲染。 該程式庫將 HTML <input> 元素直接轉換為互動式 PDF 表單欄位。

以下程式碼將從 HTML 字串建立一個包含兩個欄位的 PDF 表單,然後填寫兩個欄位:

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/create-and-fill-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.render.ChromePdfRenderOptions;
import java.io.IOException;
import java.nio.file.Paths;

public class App {

    public static void main(String[] args) throws IOException {

        // Define an HTML form with two text input fields
        String formHTML = "<html>"
            + "<body>"
            + "<h2>Editable PDF Form</h2>"
            + "<form>"
            + "First name: <br><input type='text' name='firstname' value=''><br>"
            + "Last name: <br><input type='text' name='lastname' value=''>"
            + "</form>"
            + "</body>"
            + "</html>";

        // Enable HTML-to-form-field conversion during rendering
        ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
        renderOptions.setCreatePdfFormsFromHtml(true);

        // Render HTML to PDF and save the blank template
        PdfDocument.renderHtmlAsPdf(formHTML, renderOptions)
            .saveAs(Paths.get("assets/BasicForm.pdf"));

        // Load the template and fill in field values
        PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm.pdf"));
        form.getForm().setFieldValue("firstname", "Minnie");
        form.getForm().setFieldValue("lastname", "Mouse");

        // Save the completed form to a new file
        form.saveAs(Paths.get("assets/BasicForm_Filled.pdf"));
    }
}
Java

第一個塊使用 ChromePdfRenderOptions 與 setCreatePdfFormsFromHtml(true) 告訴渲染引擎將 HTML <input> 元素視為活動的 PDF 表單欄位而不是靜態文字。 渲染的 PDF 保存為可重用模板。 第二個塊載入該模板,依次調用 getForm().setFieldValue() 並將結果寫入另一個輸出文件,保持原始模板不變以供未來使用。

輸出看起來如何?

第一次渲染產生了具有兩個空的文字欄位的 PDF,可以在任何 PDF 閱讀器中完全編輯。

簡單的 PDF 表單顯示可編輯的名字和姓氏文字輸入欄位,帶有鐵藍色邊框框,由 IronPDF 從 HTML 渲染

在執行 setFieldValue() 後,兩個欄位都會用提供的資料填充:

IronPDF Java 輸出:名字欄位為 "Minnie"、姓氏欄位為 "Mouse" 的 PDF 表單,顯示成功填入的表單資料

如何填寫我未建立的現有 PDF 表單?

許多實務工作流程會接收到包含名欄位的第三方 PDF 模板(政府表單、保險文件、供應商合同)。 載入和填寫這些文件的過程相同:使用 PdfDocument.fromFile() 載入文件,然後使用 getForm().setFieldValue() 按名稱為每個欄位設置值。

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-existing-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;

public class FillExistingForm {

    public static void main(String[] args) throws IOException {

        // Load a third-party fillable PDF
        PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));

        // Set text field values by field name
        form.getForm().setFieldValue("applicant_name", "Jane Smith");
        form.getForm().setFieldValue("date_of_birth", "1985-06-14");
        form.getForm().setFieldValue("reference_number", "REF-2024-00421");

        // Save the completed application
        form.saveAs(Paths.get("output/application_filled.pdf"));
    }
}
Java

要在現有 PDF 中發現欄位名,請在 Adobe Acrobat Reader 中打開文件,右鍵點擊任何欄位,然後選擇"屬性"。 欄位名出現在"常規"選項卡中。 或者,程式化地遍歷所有欄位:

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/list-form-fields.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.form.FormField;
import java.nio.file.Paths;

public class ListFormFields {

    public static void main(String[] args) throws Exception {

        PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));

        // Print the name and type of every form field
        for (FormField field : form.getForm().getFields()) {
            System.out.println("Field: " + field.getName()
                + " | Type: " + field.getType());
        }
    }
}
Java

在寫入資料之前列印欄位名,以防止 setFieldValue() 在名稱不匹配時悄然失敗。 PDF 文件中的欄位名是區分大小寫的,因此 "firstname" 和 "FirstName" 被視為不同的欄位。

請注意: IronPDF 的 getForm().getFields() 返回 FormField 物件的列表。 每個物件公開 getType() 和 getValue()。 這在建立從外部資料源(如資料庫或 CSV 文件)讀取欄位名的動態表單填寫例程時非常有用。

如何在 Java 中填寫複選框和單選按鈕?

文字欄位可直接接受字串值,但複選框和單選按鈕需要特定的導出值,這些值是在建立 PDF 時定義的。使用 setFieldValue() 並為每個欄位傳遞正確的導出值字串。

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-checkboxes-radio.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;

public class FillCheckboxesAndRadio {

    public static void main(String[] args) throws Exception {

        PdfDocument form = PdfDocument.fromFile(Paths.get("templates/survey.pdf"));

        // Check a checkbox by setting its exported value (often "Yes" or "On")
        form.getForm().setFieldValue("agree_terms", "Yes");

        // Select a radio button option by its exported value
        form.getForm().setFieldValue("preferred_contact", "email");

        form.saveAs(Paths.get("output/survey_filled.pdf"));
    }
}
Java

複選框的導出值通常是 "On",或由表單建立者設置的自訂字串。 對於單選按鈕組,組中的每個選項共享相同的欄位名,但有獨特的導出值。 使用上一節中的欄位列示技術來確認確切的導出值,然後再編寫自動填寫例程。

重要: 如果 setFieldValue() 未選中複選框或選擇單選按鈕,則可能導出值字串不正確。 列出欄位時使用 getFields() 並在手動選中的 PDF 副本上檢查 getValue() 以獲取正確的字串。

如何在 PDF 表單中使用 Java 填寫下拉列表?

下拉列表欄位(也被稱為組合框欄位)使用與文字欄位相同的 API。 將選項的導出值作為字串傳遞給 setFieldValue()。 除非表單欄位建立者定義了單獨的底層值,否則導出值通常是可見的選項文字。

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-dropdown.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;

public class FillDropdown {

    public static void main(String[] args) throws Exception {

        PdfDocument form = PdfDocument.fromFile(Paths.get("templates/registration.pdf"));

        // Set a dropdown/combo box field to a specific option
        form.getForm().setFieldValue("country", "United States");

        // Set a list box field (multi-select may require comma-separated values)
        form.getForm().setFieldValue("subscription_tier", "Professional");

        form.saveAs(Paths.get("output/registration_filled.pdf"));
    }
}
Java

當下拉列表的導出值與可見的標籤不同時,請使用 getFields() 檢查欄位的可用選項。 傳遞與欄位定義的任何選項不匹配的值將保持選擇不變,不會拋出異常,因此在批量運行之前驗證導出值可避免資料消失而未引起注意。

提示: 若要檢查組合框的所有可用選項,將 FormField 轉換為 FormComboBoxField 並調用 getOptions()。 這將返回該下拉列表的有效導出值列表。

如何在 Java 中將填寫的 PDF 表單扁平化?

扁平化將所有表單欄位轉換為靜態的、不可編輯的內容。 這防止收件人更改提交的資料,是許多歸檔和合規用途的要求。 IronPDF 支持將表單扁平化作為其 PDF 操控能力 的一部分。

//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/flatten-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;

public class FlattenForm {

    public static void main(String[] args) throws Exception {

        PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm_Filled.pdf"));

        // Flatten all form fields -- values become static text
        form.getForm().flatten();

        form.saveAs(Paths.get("output/BasicForm_Archived.pdf"));
    }
}
Java

在運行 flatten() 後,輸出 PDF 中不再有互動式表單欄位。 文件大小通常減少,因為表單欄位覆蓋層已被刪除。 扁平化的 PDF 是可以安全分發的,無需擔心接收者編輯已提交的數值。

Java 中 PDF 表單填寫的下一步是什麼?

IronPDF 為在 Java 中填寫 PDF 表單提供了一個專注的、低樣板程式碼的 API。 getForm() 方法直接存取文字欄位、複選框、單選按鈕和下拉列表。 當需要存檔時,flatten() 將所有填寫的資料鎖定為靜態內容。

對於您的 PDF 文件工作流的下一步,請探索這些指南:

開始免費試用 IronPDF for Java,以在您自己的專案中測試表單填寫。 當您準備好部署時,查看 IronPDF 的授權選項,以找到適合您團隊需求的計劃。

常見問題

在Java中填寫PDF表單的基本步驟是什麼?

新增IronPDF Maven依賴項,使用PdfDocument.fromFile()載入您的PDF,使用getForm()存取表單欄位,對每個欄位調用setFieldValue(fieldName, value),然後使用saveAs()保存結果。

如何在現有PDF中發現欄位名稱?

在Adobe Acrobat Reader中打開PDF,右鍵單擊任何欄位,並選擇屬性。欄位名稱將顯示在常規選項卡中。或者,調用getForm().getFields()以程式方式迭代所有欄位並列印每個getName()和getType()。

我如何在Java中填寫勾選方框和選項按鈕?

使用setFieldValue()與欄位的導出值字串。勾選方框的導出值通常為Yes或On。對於選項按鈕組,所有選項共享相同的欄位名稱,但有不同的導出值。如果該欄位無法響應,請檢查手動勾選的PDF副本上的getValue()來找到正確的字串。

我如何填寫下拉列表欄位?

調用setFieldValue(fieldName, optionValue)並提供選項的導出值。導出值通常為可見的選項文字。要程式化列出可用選項,將FormField轉換為FormComboBoxField並呼叫getOptions()。

扁平化PDF表單有什麼作用?

扁平化將所有交互式表單欄位轉換為靜態且不可編輯的內容。在保存前調用getForm().flatten()。生成的PDF不能被接收者編輯,這在許多存檔和合規性工作流程中是必需的。

IronPDF可以填寫由其他工具建立的表單嗎?

是的。PdfDocument.fromFile()可以載入任何標準的可填寫PDF,而不管其如何建立。因為欄位名稱區分大小寫且因表單作者而異,所以在調用setFieldValue()之前使用getForm().getFields()檢查欄位名稱。

How can I fill dropdown lists in a PDF form using IronPDF?

Use setFieldValue() to assign the dropdown option's export value. The exact export value should match the option's defined value in the PDF form, with FormComboBoxField.getOptions() providing the list of valid values.

How do I flatten a filled PDF form using IronPDF?

Flattening a filled PDF form with IronPDF can be done by calling form.getForm().flatten() on the PdfDocument, which converts form fields into static text, preventing further editing.

What are some additional features of IronPDF for Java?

Beyond form filling, IronPDF features include rendering HTML to PDF, manipulating PDF security settings, applying digital signatures, and allowing programmatic access to various PDF document elements.

How can I find more resources to further explore IronPDF capabilities?

Explore the [IronPDF Java API reference](https://ironpdf.com/java/object-reference/api/) for detailed documentation, and additional guides on creating forms from HTML, HTML to PDF conversion, and PDF security and digital signing.

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

準備好開始了嗎?

版本:2026.6剛剛發布

立即獲取免費

立即獲取 30天試用金鑰。

bullet_checked無需信用卡或註冊帳號
bullet_test在生產
環境中進行測試,且不顯示浮水印
bullet_calendar30 天全
功能產品
bullet_support試用期間提供 24/5 技術
支援
立即獲取您的免費 30天試用金鑰。
無需信用卡或帳戶建立
PDF的Java Maven程式庫
using Maven 安裝

版本: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
or
Java PDF JAR
下載 JAR

版本: 2026.6

手動安裝到您的專案中

有問題嗎?聯繫我們的開發團隊。

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費 即時演示
Booking Badge

全球數百萬工程師的信任

Iron Software的客戶商標
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊始終保持機密。
全球數百萬工程師的信任
Iron Software的客戶商標
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
PDF的Java Maven程式庫
using Maven 安裝

版本: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
or
Java PDF JAR
下載 JAR

版本: 2026.6

手動安裝到您的專案中