如何在 Python 中填寫 PDF 表單欄位
使用 IronPDF 在 Python 中透過程式碼填寫 PDF 表單:僅需幾行程式碼,即可載入現有 PDF、根據欄位名稱定位各欄位、填入數值,並儲存結果。
快速入門:填寫 PDF 表單欄位
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/quickstart.py
1. Install IronPDF: `pip install ironpdf`
2. Load your PDF: `form_document = PdfDocument.FromFile("form.pdf")`
3. Find form field: `field = form_document.Form.FindFormField("fieldname")`
4. Set field value: `field.Value = "Your Value"`
5. Save filled PDF: `form_document.SaveAs("filled_form.pdf")`
// 此程式碼片段無法顯示!
1. Install IronPDF: `pip install ironpdf`
2. Load your PDF: `form_document = PdfDocument.FromFile("form.pdf")`
3. Find form field: `field = form_document.Form.FindFormField("fieldname")`
4. Set field value: `field.Value = "Your Value"`
5. Save filled PDF: `form_document.SaveAs("filled_form.pdf")`
如何在 Python 中填寫 PDF 表單欄位
- 安裝 IronPDF Python 函式庫
- 載入包含表單欄位的現有 PDF 文件
- 使用 Form 屬性的
FindFormField方法,透過名稱存取表單欄位 - 為該欄位的 Value 屬性賦予新值
- 使用"
另存為"功能匯出修改後的文件
透過網頁使用者介面收集資料,進而產生已填入資料的 PDF 檔案以供歸檔或後續處理,是常見的文件自動化模式。 與其手動將資料填入 PDF 表單,Python 腳本能立即處理此任務:讀取欄位名稱、填入數值,並產出可供儲存或發送的完整文件。
IronPDF 讓此工作流程變得直觀:一個 API 即可從 HTML 建立表單,一個方法即可透過名稱定位欄位,一個屬性即可設定其值。 實際環境中的 PDF 表單不僅包含文字輸入欄位。 複選框、單選按鈕和下拉式選單皆透過相同的 FindFormField 和 Value 方法進行支援。 本指南的其餘部分將逐步說明關鍵情境:從 HTML 標記生成表單、填寫現有文件中的欄位、讀取所有欄位類型,以及從資料來源執行批次填入。
如何使用 Python 的 HTML 來建立並填寫 PDF 表單?
IronPDF 能將 HTML <input> 元素直接轉換為可編輯的 PDF 欄位,讓您能從網頁風格的表單定義,直接生成可填寫的 PDF 文件。 您可以使用熟悉的 HTML 和 CSS 設計表單,隨後立即填入資料,無需任何中間的手動步驟。
以下範例將 HTML 表單渲染為 PDF,接著填入 firstname 和 lastname 欄位,最後儲存結果。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/fill-form-from-html.py
from ironpdf import *
# Define HTML content for a simple form
form_html = """
<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>
"""
# Instantiate a PDF renderer
renderer = ChromePdfRenderer()
# Enable HTML form-to-PDF-field conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
# Render the HTML content to a PDF file
renderer.RenderHtmlAsPdf(form_html).SaveAs("BasicForm.pdf")
# Load the created PDF document
form_document = PdfDocument.FromFile("BasicForm.pdf")
# Access the "firstname" field and set its value
first_name_field = form_document.Form.FindFormField("firstname")
first_name_field.Value = "Minnie"
print("FirstNameField value: {}".format(first_name_field.Value))
# Access the "lastname" field and set its value
last_name_field = form_document.Form.FindFormField("lastname")
last_name_field.Value = "Mouse"
print("LastNameField value: {}".format(last_name_field.Value))
# Save the filled form
form_document.SaveAs("FilledForm.pdf")
// 此程式碼片段無法顯示!
from ironpdf import *
# Define HTML content for a simple form
form_html = """
<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>
"""
# Instantiate a PDF renderer
renderer = ChromePdfRenderer()
# Enable HTML form-to-PDF-field conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
# Render the HTML content to a PDF file
renderer.RenderHtmlAsPdf(form_html).SaveAs("BasicForm.pdf")
# Load the created PDF document
form_document = PdfDocument.FromFile("BasicForm.pdf")
# Access the "firstname" field and set its value
first_name_field = form_document.Form.FindFormField("firstname")
first_name_field.Value = "Minnie"
print("FirstNameField value: {}".format(first_name_field.Value))
# Access the "lastname" field and set its value
last_name_field = form_document.Form.FindFormField("lastname")
last_name_field.Value = "Mouse"
print("LastNameField value: {}".format(last_name_field.Value))
# Save the filled form
form_document.SaveAs("FilledForm.pdf")
將 CreatePdfFormsFromHtml 屬性設定為 True,會指示渲染器將 HTML 中的每個 <input> 元素轉換為對應的互動式 PDF 欄位。 若未設定此標記,文字輸入欄位將以靜態視覺元素呈現,無法透過程式化方式填入內容。
渲染完成後,PdfDocument.FromFile 會將儲存的檔案重新載入記憶體中。 FindFormField 方法接受字段的 name 屬性作為字串,並返回一個 FormField 物件。 將值賦予 Value 會將資料寫入該欄位。 SaveAs 呼叫會將修改後的文件寫入磁碟。
name 欄位的屬性簡短且符合 URL 安全規範。 欄位名稱中的空格和特殊字元雖可正常運作,但可能會增加後續 FindFormField 查詢的複雜度。未填寫前的空白表單長什麼樣子?

生成的 PDF 會保留 HTML 表單的視覺版面配置。 每個文字輸入欄位皆呈現為可點擊且可編輯的欄位。 當表單在 PDF 閱讀器中開啟時,使用者仍可手動在欄位中輸入內容,或如上所述透過 API 填入欄位。
填寫完畢後,表單會呈現什麼樣貌?

已填寫的文件顯示了寫入各欄位的值。 表單結構與欄位互動功能完全保留:PDF 檔案可直接儲存以供歸檔,或進行扁平化處理以鎖定數值以便分發。
如何在現有 PDF 文件中填寫欄位?
許多實際工作流程會涉及使用 Adobe Acrobat、WORD 或其他工具所建立的 PDF 表單。 IronPDF 可載入任何包含 AcroForm 表單欄位的 PDF 檔案,並使用與從 HTML 建立表單時相同的 FindFormField 和 Value API 來填入資料。 AcroForm 是 PDF 規格中定義的標準互動式表單格式,並獲得所有主要 PDF 閱讀器的支援。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/fill-existing-form.py
from ironpdf import *
# Load a pre-existing PDF with form fields
form_document = PdfDocument.FromFile("existing_form.pdf")
# Enumerate available field names (helpful when exploring an unfamiliar form)
for field in form_document.Form.Fields:
print("Field name:", field.Name, "| Current value:", field.Value)
# Fill a specific field by name
applicant_name_field = form_document.Form.FindFormField("applicant_name")
applicant_name_field.Value = "Jane Smith"
# Fill a second field
date_field = form_document.Form.FindFormField("application_date")
date_field.Value = "2026-05-03"
# Save the filled document
form_document.SaveAs("submitted_application.pdf")
// 此程式碼片段無法顯示!
from ironpdf import *
# Load a pre-existing PDF with form fields
form_document = PdfDocument.FromFile("existing_form.pdf")
# Enumerate available field names (helpful when exploring an unfamiliar form)
for field in form_document.Form.Fields:
print("Field name:", field.Name, "| Current value:", field.Value)
# Fill a specific field by name
applicant_name_field = form_document.Form.FindFormField("applicant_name")
applicant_name_field.Value = "Jane Smith"
# Fill a second field
date_field = form_document.Form.FindFormField("application_date")
date_field.Value = "2026-05-03"
# Save the filled document
form_document.SaveAs("submitted_application.pdf")
當處理表單欄位名稱未經文件說明時,在填入資料前先迭代 form_document.Form.Fields 會很有幫助。 此迴圈會PRINT每個欄位名稱及其當前值,在寫入任何值之前,便能完整呈現表單所期望的資料結構。
如何處理核取方塊及其他欄位類型?
文字欄位是最常見的表單元素,但實際的表單還包含核取方塊、單選按鈕以及下拉式選單。 IronPDF 透過相同的 Form.Fields 集合提供所有這些功能。 Value 屬性會接受各類型對應的適當字串。
下表列出三種最常見的非文字欄位類型的有效值:
| 欄位類型 | HTML 輸入類型 | 需設定的數值 | 備註 |
|---|---|---|---|
| 核取方塊 | | "true" 或 "false" | 不區分大小寫;請使用字串,而非布林值 |
| 單選鈕 | | 選項的 value 屬性 | 名稱相同,但各選項的數值不同 |
| 下拉式選單(組合方塊) | | 所需選項的顯示文字 | 必須與現有選項完全一致 |
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/fill-field-types.py
from ironpdf import *
# Load a form with multiple field types
form_document = PdfDocument.FromFile("application_form.pdf")
# Fill a text field
form_document.Form.FindFormField("full_name").Value = "Alex Rivera"
# Check a checkbox (use string "true")
form_document.Form.FindFormField("agree_terms").Value = "true"
# Select a radio button option by its value attribute
form_document.Form.FindFormField("employment_status").Value = "full_time"
# Select a dropdown option by display text
form_document.Form.FindFormField("country").Value = "United States"
form_document.SaveAs("completed_application.pdf")
// 此程式碼片段無法顯示!
from ironpdf import *
# Load a form with multiple field types
form_document = PdfDocument.FromFile("application_form.pdf")
# Fill a text field
form_document.Form.FindFormField("full_name").Value = "Alex Rivera"
# Check a checkbox (use string "true")
form_document.Form.FindFormField("agree_terms").Value = "true"
# Select a radio button option by its value attribute
form_document.Form.FindFormField("employment_status").Value = "full_time"
# Select a dropdown option by display text
form_document.Form.FindFormField("country").Value = "United States"
form_document.SaveAs("completed_application.pdf")
在迭代 form_document.Form.Fields 時,每個 FormField 物件會公開一個 Name 屬性與一個 Value 屬性。 對於單選按鈕群組和下拉式選單,在輸入前先列印現有的 Value,即可顯示當前選取項目,並確認該欄位的預期格式。
FindFormField 返回 None,表示該欄位名稱在文件中不存在。 請透過 form_document.Form.Fields PRINT 所有名稱,以驗證拼寫並確認該欄位是否存在。 欄位名稱區分大小寫。)}]如何從資料來源批量填寫表單?
從試算表或資料庫查詢中,針對每筆記錄生成一份已填妥的 PDF 文件,是團隊採用程式化表單填寫功能最常見的原因之一。 IronPDF 透過將每次填入操作視為無狀態來處理此問題:載入範本、填入欄位、以唯一名稱儲存,並重複此流程。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/bulk-fill-forms.py
from ironpdf import *
# Sample data records (replace with database or CSV source)
applicants = [
{"name": "Alice Johnson", "id": "A001", "date": "2026-05-03"},
{"name": "Bob Williams", "id": "B002", "date": "2026-05-03"},
{"name": "Carol Davis", "id": "C003", "date": "2026-05-03"},
]
for applicant in applicants:
# Load template from disk on each iteration to avoid cross-contamination
form_document = PdfDocument.FromFile("application_template.pdf")
# Fill each field from the data record
form_document.Form.FindFormField("applicant_name").Value = applicant["name"]
form_document.Form.FindFormField("applicant_id").Value = applicant["id"]
form_document.Form.FindFormField("submission_date").Value = applicant["date"]
# Save each filled form with a unique filename
output_path = f"output/application_{applicant['id']}.pdf"
form_document.SaveAs(output_path)
print(f"Saved: {output_path}")
// 此程式碼片段無法顯示!
from ironpdf import *
# Sample data records (replace with database or CSV source)
applicants = [
{"name": "Alice Johnson", "id": "A001", "date": "2026-05-03"},
{"name": "Bob Williams", "id": "B002", "date": "2026-05-03"},
{"name": "Carol Davis", "id": "C003", "date": "2026-05-03"},
]
for applicant in applicants:
# Load template from disk on each iteration to avoid cross-contamination
form_document = PdfDocument.FromFile("application_template.pdf")
# Fill each field from the data record
form_document.Form.FindFormField("applicant_name").Value = applicant["name"]
form_document.Form.FindFormField("applicant_id").Value = applicant["id"]
form_document.Form.FindFormField("submission_date").Value = applicant["date"]
# Save each filled form with a unique filename
output_path = f"output/application_{applicant['id']}.pdf"
form_document.SaveAs(output_path)
print(f"Saved: {output_path}")
在迴圈內部載入範本,而非在迴圈開始前載入一次,可防止欄位值在多次迭代中累積。 每次呼叫 PdfDocument.FromFile 都會產生一個新的範本副本,因此填寫一個記錄不會影響下一個記錄。
PdfDocument.FromFile 的範本,並在 API 支援的情況下使用複製機制。 在部署前,請根據您的流量需求對兩種方法進行效能測試。)}]IronPDF 不會對單次執行腳本所能產生的文件數量施加人為限制。 吞吐量取決於可用記憶體及輸出目標的 I/O 速度。 對於非常龐大的批次,先寫入本地 SSD 再傳輸至網路儲存裝置,比直接寫入網路共用資料夾更快。
如何將已填寫的 PDF 表單轉為純文字檔?
"扁平化"會將互動式表單欄位轉換為靜態頁面內容,並將當前值固定下來。 扁平化 PDF 是用於歸檔、列印,或傳送給不應變更欄位值的收件者的最佳選擇。
IronPDF 提供了一種"扁平化表單欄位"的方法,可對任何已載入的 PdfDocument 進行操作。 填寫完欄位後呼叫此函式,然後儲存結果。
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/flatten-form.py
from ironpdf import *
# Load and fill a form
form_document = PdfDocument.FromFile("application_template.pdf")
form_document.Form.FindFormField("full_name").Value = "Jordan Lee"
form_document.Form.FindFormField("application_date").Value = "2026-05-03"
# Flatten all form fields to lock values as static content
form_document.Form.Flatten()
# Save the flattened, non-editable PDF
form_document.SaveAs("archived_application.pdf")
// 此程式碼片段無法顯示!
from ironpdf import *
# Load and fill a form
form_document = PdfDocument.FromFile("application_template.pdf")
form_document.Form.FindFormField("full_name").Value = "Jordan Lee"
form_document.Form.FindFormField("application_date").Value = "2026-05-03"
# Flatten all form fields to lock values as static content
form_document.Form.Flatten()
# Save the flattened, non-editable PDF
form_document.SaveAs("archived_application.pdf")
在 Flatten() 之後,文件中不再包含互動式欄位物件。 接收該檔案的下游系統所看到的,是普通文字內容,而非表單控件。 這對於符合 PDF/A 歸檔規範,以及防止在多步驟審核流程中發生非預期的編輯,至關重要。
如何在 Python 中安裝 IronPDF?
IronPDF 可在 PyPI 上取得。 使用 pip 安裝:
pip install ironpdf
安裝完成後,請在每個腳本的開頭使用 from ironpdf import * 導入該函式庫。 提供免費試用授權供評估使用。 在執行任何 PDF/A 操作之前,生產環境部署需透過 License.LicenseKey 屬性設定商業授權金鑰。
Python 中的 PDF 表單自動化下一步該怎麼做?
本指南涵蓋了從 HTML 建立 PDF 表單、填寫現有文件中的欄位、處理核取方塊與下拉式選單欄位、根據資料記錄批次產生已填寫的表單,以及將已填寫的 PDF 文件扁平化以便歸檔等內容。 每種技術皆採用相同的核心 API:FindFormField 用於根據名稱定位欄位,Value 用於賦值,以及 SaveAs 用於寫入結果。
若要探索 IronPDF for Python 的相關功能:
- 從 HTML 範本建立 PDF 表單:使用 HTML 和 CSS 設計完整的表單版面配置
- 編輯及填寫現有 PDF 表單:處理在 IronPDF 以外環境所建立文件中的 AcroForm 欄位
- 扁平化 PDF 表單欄位:鎖定欄位值,以便歸檔或製作可直接列印的文件
- 從 PDF 中擷取文字與圖片:從已填寫的文件中讀取資料
- HTML 轉 PDF 轉換指南:深入探討 IronPDF 所使用的渲染流程
- 探索 GitHub 上的 IronPDF Python 原始碼範例:本指南中所有情境的可執行程式碼
立即開始免費試用,在您的 Python 專案中測試表單填寫功能。 當您準備部署時,請查看個人開發者與Enterprise套件的授權選項。
常見問題
在 Python 中透過程式碼填寫 PDF 表單的基本步驟有哪些?
使用 `pip install IronPDF` 安裝 IronPDF,透過 `PdfDocument.FromFile()` 載入 PDF 檔案,使用 `form_document.Form.FindFormField()` 查找目標欄位,將值賦予 `field.Value`,最後透過 `SaveAs()` 儲存檔案。
如何存取並修改 PDF 文件中的特定表單欄位?
請在已載入的 PdfDocument 物件的 Form 屬性上使用 FindFormField 方法,並將欄位名稱作為字串傳入。該方法會傳回一個 FormField 物件,您可以讀取或設定其 Value 屬性。
如何使用 IronPDF 填寫核取方塊和下拉式選單?
對於核取方塊,請將 Value 設定為字串 "true" 或 "false"。對於單選按鈕,請將 Value 設定為所需選項的 value 屬性。對於下拉式選單,請將 Value 設定為您希望選中的選項之精確顯示文字。
我可以自動批量填寫多個 PDF 文件中的表單嗎?
是的。請在迴圈中載入範本,並在每次迭代時使用 PdfDocument.FromFile() 取得新副本,從資料來源填入欄位,最後透過 SaveAs() 將每個結果以唯一檔名儲存。
何謂表單扁平化?何時該使用它?
「扁平化」功能會將互動式表單欄位轉換為靜態頁面內容,並鎖定其值。當文件需進行歸檔、列印,或分發給不應編輯欄位值的收件者時,請在儲存前呼叫 form_document.Form.Flatten()。
如果 FindFormField 無法找到欄位,會發生什麼情況?
若不存在名稱與參數相符的欄位,FindFormField 會傳回 None。請遍歷 form_document.Form.Fields 以列印所有可用欄位名稱,並確認拼寫正確。欄位名稱區分大小寫。
IronPDF 支援哪些類型的 PDF 表單?
IronPDF 支援 AcroForm 表單欄位,這是 Adobe Acrobat 及多數 PDF 製作工具所採用的標準互動式表單格式。掃描的 PDF 及純圖像文件不包含 AcroForm 表單欄位,在進行文字擷取前需先進行 OCR 處理。

