如何在Node.js中填寫PDF表單欄位 Copy for LLMsCopy for LLMs Copy page as Markdown for LLMs
# 如何在Node.js中填寫PDF表單欄位
在Node.js中以程式化填寫PDF表單,使您能夠自動化文件工作流程:從使用資料庫記錄填入申請表,到大規模生成個性化證書。 IronPDF for Node.js 提供了一個直觀的API,用於載入現有的PDF、將值寫入表單欄位,並在您的JavaScript環境中保存完整的文件。
本指南涵蓋了完整工作流程:安裝套件、應用授權金鑰、填寫文字欄位、複選框、下拉選單和單選按鈕、平面化表單欄位以鎖定值,並保存輸出。 所有程式碼範例使用`@ironsoftware/ironpdf`套件。
*as-heading:2(快速入門:在Node.js中填寫PDF表單)*
安裝套件,然後在幾行內載入並填寫表單:
```bash
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install.sh
npm install @ironsoftware/ironpdf
```
```js
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");
})();
```
<div class="hsg-featured-snippet">
<h3>最小化工作流程(5步)</h3>
1. 安裝IronPDF:`npm install @ironsoftware/ironpdf`
2. 通過`IronPdfGlobalConfig.getConfig().licenseKey`設置您的授權金鑰
3. 使用`PdfDocument.fromFile(path)`載入現有的PDF
4. 使用`await pdf.setFormFieldValue(fieldName, value)`設置每個欄位的值
5. 使用`await pdf.saveAs(outputPath)`保存結果
</div>
## 在Node.js中填寫PDF表單需要哪些先決條件?
在運行以下程式碼範例之前,確認三件事已到位:支持的Node.js版本、IronPDF授權金鑰和`IronPdfEngine`二進制文件。
**Node.js版本**:IronPDF需要Node.js 18或更高版本。 從[Node.js官方網站](https://nodejs.org/)下載當前的LTS版本。 該庫使用Node.js的非同步I/O進行所有PDF操作,因此`await`或Promise串聯是整個過程的標準模式。 舊版本的Node.js不支持,因為該套件依賴於需要Node.js 18+的原生ESM和`async_hooks`功能。
**授權金鑰**:有效的IronPDF授權金鑰可以解鎖完整的API。 [開始免費試用](#trial-license)以獲取開發和測試的金鑰,或者[購買授權](#licensing)以用於生產。 有關部署選項(環境變數、配置文件、密鑰管理器),請參閱[使用授權金鑰](https://ironpdf.com/nodejs/get-started/license-keys/)指南。
**IronPdfEngine**:Node.js套件包括`IronPdfEngine`,一個跨平台的渲染引擎,負責實際的PDF處理。 特定於平台的安裝和備註(Windows、Linux、macOS)在[使用IronPdfEngine](https://ironpdf.com/nodejs/get-started/use-ironpdfengine/)文件中。
### 如何在Node.js程式碼中設置授權金鑰?
在應用程式啟動時應用授權金鑰,在任何`PdfDocument`調用之前:
```js
const { IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
// Apply once at startup -- before any PdfDocument operations
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
```
將金鑰儲存在環境變數中(如上所示,使用`process.env.IRONPDF_LICENSE_KEY`)可使憑證不會進入源程式碼控制。 [快速入門概覽](https://ironpdf.com/nodejs/docs/)涵蓋了針對不同部署環境的其他初始化模式。
---
## 如何安裝IronPDF for Node.js?
安裝IronPDF for Node.js只需一個npm命令。 在您的專案目錄中運行它:
```bash
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install-full.sh
npm install @ironsoftware/ironpdf
```
該套件附帶了TypeScript型別聲明,因此TypeScript專案可獲得完整的IntelliSense支持,而不需要單獨的`@types`套件。 Windows、Linux和macOS的特定平台二進制文件會在安裝期間自動下載。 npm上的[@Iron Software/ironpdf套件](https://www.npmjs.com/package/@ironsoftware/ironpdf)列出了所有已發布的版本和對等依賴項。
`.d.ts`聲明意味著IntelliSense在VS Code和其他支持TypeScript語言服務的編輯器中開箱即用。
有關將IronPDF新增到現有單一程式碼倉庫或基於Docker的工作流程的說明,請參閱[IronPDF for Node.js文件](/nodejs/docs/)。
---
## 如何以程式化方式填寫PDF表單?
載入PDF並將值寫入其表單欄位需要三個非同步調用:`saveAs()`。 下面的例子填寫了一個多欄位的申請表,並可選擇將其平面化,以便在交付後不能更改這些值。
### 完整表單填寫範例看起來如何?
下列範例載入包含多個欄位型別的PDF,填寫它們,並保存結果。 要專注於建立表單而不是填寫表單,請參閱[PDF表單範例頁面](https://ironpdf.com/nodejs/examples/form-data/)。
```js
//: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);
```
調用`getFormFieldNames()`後,返回的陣列告訴您PDF作者使用的欄位名稱。 這是避免在未建立的表單中的欄位名稱出現拼寫錯誤的最快方法。
[[t:(在開發過程中調用`getFormFieldNames()`一次,以便列印PDF中的確切欄位名稱。 硬插錯誤名稱是表單被填寫後欄位顯示空白的最常見原因。)]]
---
## 如何處理不同的表單欄位型別?
IronPDF支持標準的AcroForm欄位型別:文字框、複選框、單選按鈕、下拉選單、列表框和簽名欄位。 `setFormFieldValue()`方法接受所有型別的字串值;對於複選框和單選按鈕欄位,接受的值取決於PDF中欄位的特定定義。
下表顯示每個欄位型別的值格式:
<table class="content__data-table" data-content-table>
<caption>PDF AcroForm欄位型別及其接受的值格式</caption>
<thead>
<tr><th>欄位型別</th><th>值格式</th><th>範例</th></tr>
</thead>
<tbody>
<tr><td>文字/多行</td><td>任意字串</td><td><code>"Jane Doe"</code></td></tr>
<tr><td>複選框</td><td><code>"true"</code> 或 <code>"false"</code></td><td><code>"true"</code></td></tr>
<tr><td>單選按鈕</td><td>選項的導出值</td><td><code>"Female"</code></td></tr>
<tr><td>下拉選單(組合)</td><td>選項的顯示文字</td><td><code>"United States"</code></td></tr>
<tr><td>列表框(多選)</td><td>字串陣列</td><td><code>["Option1", "Option2"]</code></td></tr>
<tr><td>日期/數字</td><td>字串表示</td><td><code>"2024-06-15"</code></td></tr>
</tbody>
</table>
### 複選框和單選按鈕如何運作?
複選框接受`"false"`以取消勾選。 單選按鈕接受選項的導出值,以進行選擇——該導出的字串通常可在PDF的欄位屬性中看到,並且與顯示標簽不同。
```js
//: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);
```
多選列表框欄位遵循相同的模式。 當一個欄位允許多重選擇時,傳入字串陣列而不是單個值。 簽名欄位可以收到一個代表簽名圖像的base64編碼影像字串。
`getFormFieldNames()`列出文件中的實際名稱。
---
## 如何在填寫後平面化PDF表單欄位?
平面化PDF表單將所有欄位值合併到靜態頁面內容中,移除交互式層。 生成的文件無法進一步編輯,這樣可以防止分發過程中意外更改,並確保在所有PDF查看器中一致呈現。
在設置所有欄位值後,保存之前,調用`flattenAllFormFields()`關於已載入的文件:
```js
//: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);
```
平面化適用於最終交付——簽署後的合同、發放後的證書或獲批後的發票。 對於需要進一步審核的檔,在最終確認前跳過`flattenAllFormFields()`,並不使用它進行保存。
[[w:(平面化是一個不可逆的操作,保存在副本上。 如果您需要重新生成文件,請保留原始的未填寫的PDF作為範本。)]]
---
## PDF表單自動化的常見用例是什麼?
自動表單填寫消除了高量文件工作流程中的手動資料輸入。 以下情景涵蓋了開發者最常使用IronPDF實現的模式。
**申請處理**:從資料庫或REST API中提取申請人資料,並填寫金融服務、保險或政府提交流程的PDF表單。 使用[PDF合併範例](https://ironpdf.com/nodejs/examples/merge-pdfs/)合併填寫的表單,以生成單個多頁的提交包。
**發票和收據生成**:填寫發票模板,輸入項目明細、客戶詳細資訊和計算總額。 使用[HTML頁眉和頁腳範例](https://ironpdf.com/nodejs/examples/html-headers-and-footers/)中的技術新增頁眉和頁腳。
**證書和憑證生成**:個性化證書模板,填寫接收者姓名、完成日期和課程標題。 使用[數位簽名](https://ironpdf.com/nodejs/examples/digitally-sign-a-pdf/)範例新增安全性,以防止發行後被篡改。 [PDF/A標準](https://en.wikipedia.org/wiki/PDF/A)通常在需要長期存檔的受管產業中使用。
**報告生成功能**:填充報告模板,輸入分析資料或調查結果。 對於需從頭開始構建PDF佈局而不是填寫現有表單的情況,請參閱[HTML轉PDF](https://ironpdf.com/nodejs/tutorials/html-to-pdf/)教學。
---
## 在Node.js中填寫PDF表單的下一步是什麼?
本指南演示了如何載入PDF,填寫文字欄位、複選框、下拉選單和單選按鈕,平面化表單以鎖定值,並保存完整文件。 相同的`PdfDocument`例項支持進一步操作——新增數位簽名、壓縮輸出或提取文字——而不需要重新載入文件。
[開始免費試用](#trial-license)以在您的專案中測試IronPDF,或[查看授權選項](#licensing)以找到適合您部署的方案。
準備好看看您還能做什麼嗎? 在這裡查看完整的Node.js教學系列:[Node.js中HTML轉PDF](https://ironpdf.com/nodejs/tutorials/html-to-pdf/)
Ask ChatGPT about this page
Ask Gemini about this page
Ask Perplexity about this page
在Node.js中以程式化填寫PDF表單,使您能夠自動化文件工作流程:從使用資料庫記錄填入申請表,到大規模生成個性化證書。 IronPDF for Node.js 提供了一個直觀的API,用於載入現有的PDF、將值寫入表單欄位,並在您的JavaScript環境中保存完整的文件。
本指南涵蓋了完整工作流程:安裝套件、應用授權金鑰、填寫文字欄位、複選框、下拉選單和單選按鈕、平面化表單欄位以鎖定值,並保存輸出。 所有程式碼範例使用@ironsoftware/ironpdf套件。
安裝套件,然後在幾行內載入並填寫表單:
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install.sh
npm install @ironsoftware/ironpdf
//: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" );
})();
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
最小化工作流程(5步)
安裝IronPDF:npm install @ironsoftware/ironpdf
通過IronPdfGlobalConfig.getConfig().licenseKey設置您的授權金鑰
使用PdfDocument.fromFile(path)載入現有的PDF
使用await pdf.setFormFieldValue(fieldName, value)設置每個欄位的值
使用await pdf.saveAs(outputPath)保存結果
在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 ;
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
//: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);
//: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中欄位的特定定義。
下表顯示每個欄位型別的值格式:
複選框和單選按鈕如何運作?
複選框接受"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);
//: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);
//: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 18或更高版本、IronPDF授權金鑰(可免費試用)、以及IronPdfEngine二進制文件。該引擎包含在@ironsoftware/ironpdf包中,並在安裝過程中自動下載。
在您的專案目錄中運行npm install @ironsoftware/ironpdf。該命令將安裝該包及其針對Windows、Linux和macOS的特定平台二進制文件。包含TypeScript型別聲明。
在使用PdfDocument.fromFile()載入PDF後調用await pdf.getFormFieldNames()。該方法返回文件中所有字段名稱字串的陣列。PDF字段名稱是大小寫敏感的,因此請使用返回的準確字串。
複選框接受字串"true"來選中,"false"來取消選中。單選按鈕接受目標選項的匯出值作為字串。使用getFormFieldNames()並檢查PDF字段屬性以找到正確的匯出值。
在設置所有字段值後並在saveAs()之前調用await pdf.flattenAllFormFields()。平面化會將字段值合併到靜態頁面內容中並移除互動式表單層。該操作在保存的文件上是不可逆的。
可以。@ironsoftware/ironpdf包中附帶TypeScript聲明(.d.ts文件),因此您可以在VS Code和其他編輯器中獲得完整的型別檢查和IntelliSense,而無需安裝單獨的型別包。
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.
Storing the IronPDF license key in an environment variable helps to keep your credentials secure and out of source control, thus enhancing application security.
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.
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擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
...
閱讀更多