IRONSOFTWAREHOME

如何在Node.js中填寫PDF表單欄位

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

在Node.js中以程式化填寫PDF表單,使您能夠自動化文件工作流程:從使用資料庫記錄填入申請表,到大規模生成個性化證書。 IronPDF for Node.js 提供了一個直觀的API,用於載入現有的PDF、將值寫入表單欄位,並在您的JavaScript環境中保存完整的文件。

本指南涵蓋了完整工作流程:安裝套件、應用授權金鑰、填寫文字欄位、複選框、下拉選單和單選按鈕、平面化表單欄位以鎖定值,並保存輸出。 所有程式碼範例使用@ironsoftware/ironpdf套件。

快速入門:在Node.js中填寫PDF表單

安裝套件,然後在幾行內載入並填寫表單:

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install.sh
npm install @ironsoftware/ironpdf
SHELL
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");

IronPdfGlobalConfig.getConfig().licenseKey = "YOUR-LICENSE-KEY-HERE";

(async () => {
    const pdf = await PdfDocument.fromFile("./form.pdf");
    await pdf.setFormFieldValue("firstName", "Jane");
    await pdf.setFormFieldValue("email", "jane@example.com");
    await pdf.saveAs("./filled-form.pdf");
})();
JavaScript

在Node.js中填寫PDF表單需要哪些先決條件?

在運行以下程式碼範例之前,確認三件事已到位:支持的Node.js版本、IronPDF授權金鑰和IronPdfEngine二進制文件。

Node.js版本:IronPDF需要Node.js 18或更高版本。 從Node.js官方網站下載當前的LTS版本。 該庫使用Node.js的非同步I/O進行所有PDF操作,因此await或Promise串聯是整個過程的標準模式。 舊版本的Node.js不支持,因為該套件依賴於需要Node.js 18+的原生ESM和async_hooks功能。

授權金鑰:有效的IronPDF授權金鑰可以解鎖完整的API。 開始免費試用以獲取開發和測試的金鑰,或者購買授權以用於生產。 有關部署選項(環境變數、配置文件、密鑰管理器),請參閱使用授權金鑰指南。

IronPdfEngine:Node.js套件包括IronPdfEngine,一個跨平台的渲染引擎,負責實際的PDF處理。 特定於平台的安裝和備註(Windows、Linux、macOS)在使用IronPdfEngine文件中。

如何在Node.js程式碼中設置授權金鑰?

在應用程式啟動時應用授權金鑰,在任何PdfDocument調用之前:

const { IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");

// Apply once at startup -- before any PdfDocument operations
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
JavaScript

將金鑰儲存在環境變數中(如上所示,使用process.env.IRONPDF_LICENSE_KEY)可使憑證不會進入源程式碼控制。 快速入門概覽涵蓋了針對不同部署環境的其他初始化模式。


如何安裝IronPDF for Node.js?

安裝IronPDF for Node.js只需一個npm命令。 在您的專案目錄中運行它:

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install-full.sh
npm install @ironsoftware/ironpdf
SHELL

該套件附帶了TypeScript型別聲明,因此TypeScript專案可獲得完整的IntelliSense支持,而不需要單獨的@types套件。 Windows、Linux和macOS的特定平台二進制文件會在安裝期間自動下載。 npm上的@Iron Software/ironpdf套件列出了所有已發布的版本和對等依賴項。

.d.ts聲明意味著IntelliSense在VS Code和其他支持TypeScript語言服務的編輯器中開箱即用。

有關將IronPDF新增到現有單一程式碼倉庫或基於Docker的工作流程的說明,請參閱IronPDF for Node.js文件。


如何以程式化方式填寫PDF表單?

載入PDF並將值寫入其表單欄位需要三個非同步調用:saveAs()。 下面的例子填寫了一個多欄位的申請表,並可選擇將其平面化,以便在交付後不能更改這些值。

完整表單填寫範例看起來如何?

下列範例載入包含多個欄位型別的PDF,填寫它們,並保存結果。 要專注於建立表單而不是填寫表單,請參閱PDF表單範例頁面。

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/fill-pdf-form.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");

IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;

async function fillApplicationForm() {
    // Load the PDF containing form fields
    const pdf = await PdfDocument.fromFile("./forms/application-form.pdf");

    // Discover available field names before filling
    const fieldNames = await pdf.getFormFieldNames();
    console.log("Form fields:", fieldNames);

    // Text fields
    await pdf.setFormFieldValue("firstName", "Jane");
    await pdf.setFormFieldValue("lastName", "Doe");
    await pdf.setFormFieldValue("email", "jane.doe@example.com");
    await pdf.setFormFieldValue("phone", "+1-555-987-6543");

    // Date field
    await pdf.setFormFieldValue("dateOfBirth", "03/22/1988");

    // 複選框 fields -- pass "true" or "false" as strings
    await pdf.setFormFieldValue("agreeToTerms", "true");
    await pdf.setFormFieldValue("subscribeNewsletter", "false");

    // Dropdown / select field
    await pdf.setFormFieldValue("country", "United States");

    // Multi-line text area
    await pdf.setFormFieldValue("comments", "Application submitted via automated workflow.");

    // Flatten the form to lock values -- prevents further editing
    // await pdf.flattenAllFormFields();

    await pdf.saveAs("./output/filled-application.pdf");
    console.log("Form saved.");
}

fillApplicationForm().catch(console.error);
JavaScript

調用getFormFieldNames()後,返回的陣列告訴您PDF作者使用的欄位名稱。 這是避免在未建立的表單中的欄位名稱出現拼寫錯誤的最快方法。

提示: 在開發過程中調用getFormFieldNames()一次,以便列印PDF中的確切欄位名稱。 硬插錯誤名稱是表單被填寫後欄位顯示空白的最常見原因。

如何處理不同的表單欄位型別?

IronPDF支持標準的AcroForm欄位型別:文字框、複選框、單選按鈕、下拉選單、列表框和簽名欄位。 setFormFieldValue()方法接受所有型別的字串值;對於複選框和單選按鈕欄位,接受的值取決於PDF中欄位的特定定義。

下表顯示每個欄位型別的值格式:

PDF AcroForm欄位型別及其接受的值格式
欄位型別值格式範例
文字/多行任意字串"Jane Doe"
複選框"true" 或 "false""true"
單選按鈕選項的導出值"Female"
下拉選單(組合)選項的顯示文字"United States"
列表框(多選)字串陣列["Option1", "Option2"]
日期/數字字串表示"2024-06-15"

複選框和單選按鈕如何運作?

複選框接受"false"以取消勾選。 單選按鈕接受選項的導出值,以進行選擇——該導出的字串通常可在PDF的欄位屬性中看到,並且與顯示標簽不同。

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/field-types.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");

IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;

async function handleFieldTypes() {
    const pdf = await PdfDocument.fromFile("./forms/complex-form.pdf");

    // Radio button -- use the field's export value, not its display label
    await pdf.setFormFieldValue("gender", "Female");

    // 複選框
    await pdf.setFormFieldValue("termsAccepted", "true");

    // Dropdown
    await pdf.setFormFieldValue("preferredContact", "Email");

    // Numeric field -- pass the number as a string
    await pdf.setFormFieldValue("invoiceAmount", "1250.00");

    // Date picker
    await pdf.setFormFieldValue("appointmentDate", "2024-06-15");

    await pdf.saveAs("./output/complex-form-filled.pdf");
}

handleFieldTypes().catch(console.error);
JavaScript

多選列表框欄位遵循相同的模式。 當一個欄位允許多重選擇時,傳入字串陣列而不是單個值。 簽名欄位可以收到一個代表簽名圖像的base64編碼影像字串。

getFormFieldNames()列出文件中的實際名稱。


如何在填寫後平面化PDF表單欄位?

平面化PDF表單將所有欄位值合併到靜態頁面內容中,移除交互式層。 生成的文件無法進一步編輯,這樣可以防止分發過程中意外更改,並確保在所有PDF查看器中一致呈現。

在設置所有欄位值後,保存之前,調用flattenAllFormFields()關於已載入的文件:

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/flatten-form.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");

IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;

async function fillAndFlattenForm() {
    const pdf = await PdfDocument.fromFile("./forms/contract.pdf");

    // Fill the required fields
    await pdf.setFormFieldValue("signerName", "Jane Doe");
    await pdf.setFormFieldValue("signatureDate", "2024-06-15");
    await pdf.setFormFieldValue("agreementAccepted", "true");

    // Flatten -- converts interactive fields to static content
    await pdf.flattenAllFormFields();

    await pdf.saveAs("./output/contract-signed.pdf");
    console.log("Contract flattened and saved.");
}

fillAndFlattenForm().catch(console.error);
JavaScript

平面化適用於最終交付——簽署後的合同、發放後的證書或獲批後的發票。 對於需要進一步審核的檔,在最終確認前跳過flattenAllFormFields(),並不使用它進行保存。

警告: 平面化是一個不可逆的操作,保存在副本上。 如果您需要重新生成文件,請保留原始的未填寫的PDF作為範本。

PDF表單自動化的常見用例是什麼?

自動表單填寫消除了高量文件工作流程中的手動資料輸入。 以下情景涵蓋了開發者最常使用IronPDF實現的模式。

申請處理:從資料庫或REST API中提取申請人資料,並填寫金融服務、保險或政府提交流程的PDF表單。 使用PDF合併範例合併填寫的表單,以生成單個多頁的提交包。

發票和收據生成:填寫發票模板,輸入項目明細、客戶詳細資訊和計算總額。 使用HTML頁眉和頁腳範例中的技術新增頁眉和頁腳。

證書和憑證生成:個性化證書模板,填寫接收者姓名、完成日期和課程標題。 使用數位簽名範例新增安全性,以防止發行後被篡改。 PDF/A標準通常在需要長期存檔的受管產業中使用。

報告生成功能:填充報告模板,輸入分析資料或調查結果。 對於需從頭開始構建PDF佈局而不是填寫現有表單的情況,請參閱HTML轉PDF教學。


在Node.js中填寫PDF表單的下一步是什麼?

本指南演示了如何載入PDF,填寫文字欄位、複選框、下拉選單和單選按鈕,平面化表單以鎖定值,並保存完整文件。 相同的PdfDocument例項支持進一步操作——新增數位簽名、壓縮輸出或提取文字——而不需要重新載入文件。

開始免費試用以在您的專案中測試IronPDF,或查看授權選項以找到適合您部署的方案。

準備好看看您還能做什麼嗎? 在這裡查看完整的Node.js教學系列:Node.js中HTML轉PDF

常見問題

在Node.js中填寫PDF表單需要哪些前置條件?

您需要Node.js 18或更高版本、IronPDF授權金鑰(可免費試用)、以及IronPdfEngine二進制文件。該引擎包含在@ironsoftware/ironpdf包中,並在安裝過程中自動下載。

我如何安裝IronPDF用於Node.js?

在您的專案目錄中運行npm install @ironsoftware/ironpdf。該命令將安裝該包及其針對Windows、Linux和macOS的特定平台二進制文件。包含TypeScript型別聲明。

我如何發現PDF表單中的字段名稱?

在使用PdfDocument.fromFile()載入PDF後調用await pdf.getFormFieldNames()。該方法返回文件中所有字段名稱字串的陣列。PDF字段名稱是大小寫敏感的,因此請使用返回的準確字串。

複選框和單選按鈕接受什麼值格式?

複選框接受字串"true"來選中,"false"來取消選中。單選按鈕接受目標選項的匯出值作為字串。使用getFormFieldNames()並檢查PDF字段屬性以找到正確的匯出值。

我如何防止已填寫的PDF表單被編輯?

在設置所有字段值後並在saveAs()之前調用await pdf.flattenAllFormFields()。平面化會將字段值合併到靜態頁面內容中並移除互動式表單層。該操作在保存的文件上是不可逆的。

我可以在Node.js中與TypeScript一起使用IronPDF嗎?

可以。@ironsoftware/ironpdf包中附帶TypeScript聲明(.d.ts文件),因此您可以在VS Code和其他編輯器中獲得完整的型別檢查和IntelliSense,而無需安裝單獨的型別包。

How can IronPDF be used for automated PDF form filling?

IronPDF can automate form filling by integrating with databases or APIs to populate PDFs with user data in workflows such as application processing, invoice generation, and certificate issuance.

What is the benefit of storing the IronPDF license key in an environment variable?

Storing the IronPDF license key in an environment variable helps to keep your credentials secure and out of source control, thus enhancing application security.

Can IronPDF handle multi-line text fields in PDF forms?

Yes, IronPDF can handle multi-line text fields by passing the desired text string to the `setFormFieldValue()` method. This is useful for extensive input like comments or descriptions.

What should I do if form fields appear empty after using IronPDF?

If form fields appear empty after using IronPDF, ensure the field names match exactly. Field names are case-sensitive, so use `pdf.getFormFieldNames()` to list and verify the actual field names.

Curtis Chau
技術作家

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

...
閱讀更多

準備好開始了嗎?

版本:2026.10剛剛發布

立即獲取您的免費30天試用金鑰。
無需信用卡或帳戶建立
Node.js模組下載PDF
使用npm安裝

版本: 2026.10

  1. 下載並安裝Node.js 12+。
  2. 在終端機中執行上述命令。

授權從$999起

Key in blue circle

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

Your trial license will be sent to your email address

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

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF for Node.js
預訂您的免費線上演示
Booking Badge

獲得來自全球數百萬工程師的信賴

Iron Software的客戶徽標
獲取您的無義務諮詢
您的資料將始終保密。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
獲得來自全球數百萬工程師的信賴
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
Node.js模組下載PDF
使用npm安裝

版本: 2026.10

  1. 下載並安裝Node.js 12+。
  2. 在終端機中執行上述命令。

授權從$999起