如何在 Java 中建立 PDF 表單

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Java 讓開發人員能夠透過將 HTML 轉換為 PDF,建立動態且具互動性的 PDF 表單——包含文字輸入欄位、核取方塊、下拉式選單及單選按鈕。 "HTML 優先"的方法讓您能透過標準的網頁技術,完全掌控表單的版面配置與行為,無需學習專屬的表單 API。 一旦您理解 IronPDF 如何建模表單欄位,即可透過程式化方式填寫現有的 PDF 表單

傳統的 Java PDF 函式庫需要您透過低階的 PDF 物件來建構表單欄位。 IronPDF 採取了不同的做法:先以 HTML 和 CSS 編寫表單,然後將其渲染為 PDF,同時保留每個互動式欄位的功能。 翻譯結果相容於 Adobe Acrobat Reader 及所有主流 PDF 檢視器。

快速入門:在 Java 中建立 PDF 表單

  1. 透過 Maven Central 將 IronPDF for Java 加入您的專案
  2. 請使用 License.setLicenseKey() 設定您的授權金鑰
  3. 撰寫包含標準表單元素的 HTML 字串 (<input>, <textarea>, <select>)
  4. 呼叫 PdfDocument.renderHtmlAsPdf() 將 HTML 轉換為 PDF
  5. 將生成的文件儲存為 saveAs()
//:path=/static-assets/ironpdf-java/howto/create-forms/quickstart-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set license key before any rendering call
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML form with a text field and submit button
String formHtml = "<h2>Registration Form</h2>" +
                  "<form>" +
                  "<label>Name: <input type='text' name='fullname' placeholder='Enter name'></label><br>" +
                  "<button type='submit'>Submit</button>" +
                  "</form>";

// Render HTML to PDF — form fields are preserved
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(formHtml);
pdf.saveAs("registration-form.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/quickstart-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set license key before any rendering call
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML form with a text field and submit button
String formHtml = "<h2>Registration Form</h2>" +
                  "<form>" +
                  "<label>Name: <input type='text' name='fullname' placeholder='Enter name'></label><br>" +
                  "<button type='submit'>Submit</button>" +
                  "</form>";

// Render HTML to PDF — form fields are preserved
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(formHtml);
pdf.saveAs("registration-form.pdf");
JAVA

如何在 Java 中建立表單?

IronPDF 透過將 W3C HTML 表單規範視為權威來源,從 HTML 建立 PDF 表單。 所有標準表單元素 — <checkbox><radio> — 均會在輸出 PDF 中保留為互動式欄位。 您可以使用 CSS 調整這些元素的樣式,並加入自訂字型以符合您的品牌規範。

在建立表單時,IronPDF 會將 HTML 表單元素的互動特性完整保留於生成的 PDF 檔案中。 使用者無需安裝額外軟體,即可直接在 PDF 檢視器中填寫表單。 這些表單可與 Adobe Acrobat Reader 及所有常見的 PDF 檢視器相容,使其能在企業與一般使用者環境中廣泛使用。 如需進階渲染選項,請參閱 PDF 生成設定文件。

提示IronPDF 無需運行中的瀏覽器或已安裝的 PDF 印表驅動程式。 渲染引擎已內建於函式庫中,因此表單在開發機器、CI 伺服器及雲端部署環境中皆能呈現一致的外觀。

如何建立文字輸入框和 TextArea 表單?

文字輸入框和文字區域是最常見的 PDF 表單元件,可用於收集姓名、電子郵件地址、評論及多行描述。 IronPDF 將 <input type="text"> 映射至單行 PDF 文字欄位,並將 <textarea> 映射至能保留其行與列尺寸的多行欄位。

HTML 表單元素在轉換為 PDF/A 時仍能維持其功能。 使用者可以點擊輸入欄位、輸入文字,並使用 Tab 鍵在各輸入欄位間切換,操作方式與一般網頁表單相同。 轉換過程中將保留預設值、佔位符文字以及 HTML5 驗證屬性(例如 requiredpattern)。 若需精細的版面配置控制,請將表單元素與自訂紙張尺寸邊距設定結合使用。

//:path=/static-assets/ironpdf-java/howto/create-forms/text-input-textarea-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML with single-line inputs and a multi-line textarea
String htmlContent = """
<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=''> <br>
            Address: <br> <textarea name='address' rows='4' cols='50'></textarea>
        </form>
    </body>
</html>
""";

// Render HTML — both <input> and <textarea> become interactive PDF fields
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);

// Save the document
pdfDoc.saveAs("textAreaAndInputForm.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/text-input-textarea-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML with single-line inputs and a multi-line textarea
String htmlContent = """
<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=''> <br>
            Address: <br> <textarea name='address' rows='4' cols='50'></textarea>
        </form>
    </body>
</html>
""";

// Render HTML — both <input> and <textarea> become interactive PDF fields
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);

// Save the document
pdfDoc.saveAs("textAreaAndInputForm.pdf");
JAVA

renderHtmlAsPdf 類別中的 PdfDocument 呼叫會將 HTML 轉換為完全互動式的 PDF。 每個命名過的表單欄位都會成為 PDF AcroForm 字典中的獨立欄位,任何符合標準的 PDF 檢視器皆可讀取。 您在 name 屬性中設定的欄位名稱(address)將保留於輸出結果中,日後在擷取表單資料時可讀取這些欄位。

輸出 PDF 文件:


如何建立複選框和下拉式選單表單?

複選框和下拉式選單涵蓋了 PDF 表單中最常見的兩種選取模式:二元開關選項,以及從清單中選取單一項目。IronPDF 將 <input type="checkbox"> 映射至 PDF 複選框欄位,並將 <select> 元素映射至 PDF 下拉式選單(下拉清單)欄位。

下拉式選單欄位允許使用者從由 <option> 元素定義的固定選項清單中進行選擇。 您可以透過在選項中加入 selected 屬性來預先選取預設值,使用 <optgroup> 將相關選項分組,並運用 CSS 讓下拉式選單的外觀與您的文件設計相符。 name 元素上的 <select> 屬性將成為生成的 PDF 中的欄位名稱,使表單資料的擷取變得直觀簡便。 若需使用其他工具處理表單,請參閱 Apache PDFBox 專案,了解 PDF AcroForm 欄位如何儲存此選取資料。

//:path=/static-assets/ironpdf-java/howto/create-forms/checkbox-combobox-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML with a checkbox and a select dropdown
String htmlContent = """
<html>
    <body>
        <h2>Editable PDF Form</h2>
        <h3>Task Completed</h3>
        <label>
            <input type='checkbox' id='taskCompleted' name='taskCompleted'> Mark task as completed
        </label>
        <h3>Select Priority</h3>
        <label for='priority'>Choose priority level:</label>
        <select id='priority' name='priority'>
            <option value='high'>High</option>
            <option value='medium' selected>Medium</option>
            <option value='low'>Low</option>
        </select>
    </body>
</html>
""";

// Render HTML — checkbox and combobox fields are preserved in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);

// Save the document
pdfDoc.saveAs("checkboxAndComboboxForm.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/checkbox-combobox-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML with a checkbox and a select dropdown
String htmlContent = """
<html>
    <body>
        <h2>Editable PDF Form</h2>
        <h3>Task Completed</h3>
        <label>
            <input type='checkbox' id='taskCompleted' name='taskCompleted'> Mark task as completed
        </label>
        <h3>Select Priority</h3>
        <label for='priority'>Choose priority level:</label>
        <select id='priority' name='priority'>
            <option value='high'>High</option>
            <option value='medium' selected>Medium</option>
            <option value='low'>Low</option>
        </select>
    </body>
</html>
""";

// Render HTML — checkbox and combobox fields are preserved in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);

// Save the document
pdfDoc.saveAs("checkboxAndComboboxForm.pdf");
JAVA

複選框欄位儲存一個布林狀態(PDF/A 標記中的 /On/Off),後續程式碼在處理提交的表單時可讀取此狀態。 下拉式選單會儲存所選 <option>value 屬性。 這兩種欄位類型在儲存的 PDF 中仍具互動性——使用者無需任何額外外掛程式或 JavaScript,即可勾選方塊或變更下拉式選單的選項。

輸出 PDF 文件:


如何建立單選按鈕表單?

單選按鈕呈現互斥的選項:當使用者在某一組選項中選取一項時,同一組中先前選取的任何選項都會自動取消選取。 IronPDF 會將具有相同 name 屬性的 <input type="radio"> 元素,映射至 PDF 的 AcroForm 字典中單一的群組單選按鈕欄位。

同一組中的所有單選按鈕必須具有相同的 name 屬性值 —— 這是將它們連結在 PDF/A 中的關鍵。 每個按鈕的 value 屬性,決定了當選取該選項時,該欄位所儲存的內容。 若該群組中未選取任何按鈕,欄位值即為 None。 您可以在已載入的 PdfDocument 上,透過 getForm()getFields() 方法讀取當前選取的內容,這讓您能夠建立工作流程,用於預先填寫表單或驗證提交的資料。 有關讀取表單欄位的實作範例,請參閱 PDF 表單資料範例

//:path=/static-assets/ironpdf-java/howto/create-forms/radio-button-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML with a radio button group — all three share name='traveltype'
String htmlContent = """
<html>
    <body>
        <h2>Editable PDF Form</h2>
        Choose your preferred travel type: <br>
        <input type='radio' name='traveltype' value='Bike'> Bike <br>
        <input type='radio' name='traveltype' value='Car'> Car <br>
        <input type='radio' name='traveltype' value='Airplane'> Airplane
    </body>
</html>
""";

// Render HTML — all three radio inputs become one grouped field in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);

// Save the document
pdfDoc.saveAs("radioButtonForm.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/radio-button-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

// HTML with a radio button group — all three share name='traveltype'
String htmlContent = """
<html>
    <body>
        <h2>Editable PDF Form</h2>
        Choose your preferred travel type: <br>
        <input type='radio' name='traveltype' value='Bike'> Bike <br>
        <input type='radio' name='traveltype' value='Car'> Car <br>
        <input type='radio' name='traveltype' value='Airplane'> Airplane
    </body>
</html>
""";

// Render HTML — all three radio inputs become one grouped field in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);

// Save the document
pdfDoc.saveAs("radioButtonForm.pdf");
JAVA

由於這三個 <input type="radio"> 元素共用 name="traveltype" 屬性,IronPDF 會在輸出 PDF 中建立單一的 AcroForm 單選按鈕群組。 例如,在 Acrobat Reader 中選取"汽車"一詞,會將欄位值設定為 Car,並清除先前選取的內容。 此行為符合使用者對網頁表單中單選按鈕群組的預期,使從網頁到 PDF 的資料收集過程過渡自然。

請注意單選鈕群組名稱在整個表單中必須保持唯一。 在不同的邏輯群組中重複使用相同名稱會將它們合併為單一欄位,從而無法獨立選取。)}]

如何應用 PDF 表單建立的最佳實務?

可靠的 PDF 表單需要同時關注渲染設定與長期可維護性。 最常見的問題是表單在瀏覽器中看似正確,但在轉換後卻失去互動性——這通常是因表單元素缺少 name 屬性所導致。 請務必為每個欄位指派 name; IronPDF 將此值用作 PDF 欄位識別碼,未命名欄位可能會被省略或合併。

發佈前請在多個 PDF 檢視器中測試表單。 Adobe Acrobat Reader 是參考實作,但許多 Enterprise 環境部署的是 Foxit Reader 或瀏覽器內建的檢視器,這些軟體在處理邊緣案例時,處理方式略有不同。 請使用 IronPDF 在渲染時會遵循的 HTML5 驗證屬性(pattern),以便在表單填寫階段即時偵測資料品質問題,而非等到後端處理時才發現。 針對敏感文件,請設定密碼與安全設定,以防止表單遭未經授權的編輯。

在部署至生產環境時,請於首次渲染呼叫前設定授權金鑰,並將其儲存於安全的設定儲存庫中,而非直接硬編碼。 IronPDF 發布了適用於 AWSAzureGoogle Cloud 環境的部署指南。 請參閱授權金鑰指南,以了解試用授權金鑰與正式金鑰的運作方式。

提示表單欄位名稱應簡短且僅使用英數字。 部分 PDF 閱讀器會截斷或拒絕包含空格或特殊字元的欄位名稱,這可能導致表單資料擷取失敗。

在 Java 中建立 PDF 表單的下一步該怎麼做?

本指南涵蓋了四種主要的互動式表單欄位類型——文字輸入框、文字區域、核取方塊、下拉式選單及單選按鈕——並示範了 IronPDF 如何將標準 HTML 表單標記轉換為完全互動式的 PDF 檔案。 每個欄位類型皆直接對應其 HTML 對應項目,因此現有的網頁表單範本只需稍作修改即可重複使用。

接著,不妨探索以下內容:

  • 讀取並處理表單資料:使用 getForm()getFields() 從已填寫的 PDF 中擷取提交的數值。 表單資料範例展示了完整的讀回工作流程。
  • 透過程式碼預先填寫表單:結合表單建立功能與"填寫 PDF 表單指南",為每位收件者產生預先填入資料的文件。
  • 保護您的表單:透過安全性與元資料設定範例,新增密碼保護並限制編輯權限。
  • 進階渲染:透過 PDF 生成設定指南,控制紙張尺寸、邊距、頁首及頁尾。

立即開始免費試用,無需付費授權即可測試表單建立功能。 當您的專案準備投入生產環境時,請查看適合您部署方案的授權選項

準備好探索 IronPDF 的更多功能了嗎? 點此查看完整的 HTML 轉 PDF 教學:Java 中的 HTML 轉 PDF 轉換

常見問題

在 Java 中建立 PDF 表單的最簡單方法是什麼?

IronPDF for Java 可從標準 HTML 建立 PDF 表單。撰寫包含 <input>, <textarea><select> 元素,將其傳遞給 PdfDocument.renderHtmlAsPdf(),並儲存結果。每個命名欄位在輸出 PDF 中都會轉為互動式 AcroForm 欄位。

IronPDF 在 Java 中支援哪些類型的表單欄位?

IronPDF 將所有標準 HTML 表單元素映射至其 PDF 對應元素: <input type='text'> 將轉為單行文字欄位, <textarea> 轉為多行文字欄位, <input type='checkbox'> 轉為單行文字欄位, <select> 將轉為下拉式選單, <input type='radio'> 具有相同 name 屬性分組時,則會變成單選按鈕群組。

我在 Java 中建立可填寫的 PDF 檔案時,是否需要 Adobe Acrobat?

不。IronPDF 內建專屬渲染引擎,因此無需安裝桌面版 PDF 應用程式。其產生的可填寫 PDF 檔案與 Adobe Acrobat Reader、Foxit Reader 以及所有主流 PDF 檢視器皆相容。

我可以在 Java 中使用 CSS 為 PDF 表單設定樣式嗎?

是的。由於 IronPDF 會將 HTML 渲染為 PDF,因此您可以套用 CSS 來控制欄位大小、字型、顏色及版面配置。透過 <link> 標籤載入的自訂網頁字型,也會嵌入至輸出 PDF/A 中。

在 IronPDF for Java 中,單選鈕群組是如何運作的?

所有 <input type='radio'> 共用相同 name 屬性的元素,將被歸類為單一 AcroForm 單選框。選取其中一項即會取消選取其餘選項。若未選取任何選項,該欄位值為 None。使用 getForm().getFields() 在載入時 PdfDocument.

能否讀取使用 IronPDF 建立的表單中的資料?

是的。請載入已填寫的 PDF 檔案, PdfDocument.fromFile(),然後呼叫 getForm().getFields() 來遍歷所有 AcroForm 欄位並讀取其當前值。欄位名稱對應於 name 您在原始 HTML 中設定的屬性。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
版本: 2026.5 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明?
執行範例 觀看您的 HTML 變成 PDF。