Node.jsでPDFフォームフィールドを埋める方法

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

Node.jsでのPDFフォームをプログラム的に埋めることにより、ドキュメントワークフローを自動化できます:データベースレコードで申請書を埋めるから、大量の個人化された証明書を生成するまで。 IronPDF for Node.js はJavaScript環境を離れることなく、既存のPDFをロードし、フォームフィールドに値を書き込み、完成した文書を保存するための簡単なAPIを提供します。

このガイドは、パッケージのインストール、ライセンスキーの適用、テキストフィールド、チェックボックス、ドロップダウン、ラジオボタンの記入、値をロックするためのフォームフィールドのフラット化、出力の保存という完全なワークフローをカバーします。 すべてのコード例では、await および @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
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install.sh
npm install @ironsoftware/ironpdf
SHELL
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/quickstart.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");
})();
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/quickstart.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");
})();
JAVASCRIPT

Node.jsでPDFフォームを埋めるにはどのような前提条件が必要ですか?

以下のコード例を実行する前に、サポートされている Node.js バージョン、IronPDF ライセンスキー、および IronPdfEngine バイナリの 3 つが揃っていることを確認してください。

Node.jsバージョン:IronPDFはNode.js 18以降が必要です。 現在のLTSリリースは公式 for Node.jsウェブサイトからダウンロードできます。 このライブラリは、すべてのPDF操作にNode.jsの非同期I/Oを使用しているため、await または Promise チェーンが全体を通して標準的なパターンとなっています。 このパッケージは、Node.js 18 以降を必要とするネイティブ ESM および async_hooks 機能に依存しているため、Node.js の旧バージョンはサポートされていません。

ライセンスキー:アクティブなIronPDFライセンスキーで完全なAPIを利用できます。 無料トライアルを開始して開発とテストにキーを取得するか、生産利用のためにライセンスの購入を行ってください。 展開オプション(環境変数、構成ファイル、シークレットマネージャー)については、ライセンスキーの使用ガイドを参照してください。

IronPdfEngine: この Node.js パッケージには、実際の PDF 操作を処理するクロスプラットフォームのレンダリングエンジンである IronPdfEngine が含まれています。 セットアップとプラットフォーム固有のメモ(Windows、Linux、macOS)がIronPdfEngineの使用ドキュメントにあります。

Node.jsコードでライセンスキーを設定するにはどうすればいいですか?

アプリケーションの起動時、PdfDocument の呼び出しが行われる前に、ライセンスキーを一度適用してください:

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

// Apply once at startup -- before any PdfDocument operations
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/license-setup.js
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をインストールしますか?

Node.js用のIronPDFのインストールには1つの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 プロジェクトでは、別途 @types パッケージをインストールすることなく、IntelliSense を完全に利用できます。 Windows、Linux、およびmacOS向けのプラットフォーム固有のバイナリは、インストール時に自動的にダウンロードされます。 npmでの@Iron Software/ironpdf パッケージにはすべての公開済みバージョンとピア依存関係が記載されています。

.d.ts宣言により、VS CodeやTypeScript言語サービスをサポートするその他のエディタで、IntelliSenseがすぐに利用可能になります。

既存のモノレポやDockerベースのワークフローにIronPDFを追加する手順についてはNode.js用IronPDFのドキュメントをご覧ください。


プログラムで PDF フォームを埋めるにはどうすればよいですか?

PDFを読み込み、そのフォームフィールドに値を入力するには、saveAs()の3つの非同期呼び出しが必要です。 以下の例は多くのフィールドからなる申請フォームを記入し、必要に応じてフラット化して、配布後に値が変更されないようにします。

完全なフォーム記入の例はどのように見えますか?

以下の例は、いくつかのフィールドタイプを持つPDFをロードし、それらを記入して結果を保存するものです。 記入ではなくフォームそのものを作成することに焦点を当てた詳細な例をご覧になるにはPDF Formsの例ページをご覧ください。

//: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 に正確なフィールド名が PRINT されます。 誤った名前をハードコーディングすることが、フィールドが空欄で表示される最も一般的な原因です(setFormFieldValue().


さまざまなフォームフィールドタイプをどのように扱いますか?

IronPDFは標準的なAcroFormフィールドタイプをサポートしています:テキストボックス、チェックボックス、ラジオボタン、ドロップダウン、リストボックス、および署名フィールド。 setFormFieldValue() メソッドは、すべてのタイプに対して文字列値を受け付けます。チェックボックスおよびラジオボタンフィールドの場合、受け入れられる値は PDF 内の具体的なフィールド定義によって異なります。

以下のテーブルは、各フィールドタイプに対する値の形式を示しています:

PDF AcroForm フィールドタイプとその受け入れ可能な値の形式
フィールドタイプ値の形式翻訳例
テキスト / 複数行任意の文字列"Jane Doe"
チェックボックス"true" または "false""true"
ラジオボタンオプションのエクスポート値"女性"
ドロップダウン(コンボ)オプションの表示テキスト"アメリカ合衆国"
リストボックス(マルチセレクト)文字列の配列["Option1", "Option2"]
日付 / 数値文字列表現"2024-06-15"

チェックボックスとラジオボタンはどう機能しますか?

チェックボックスは、"true" でチェックし、"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

マルチセレクトリストボックスフィールドは同じパターンに従います。 フィールドが複数の選択を許可する場合は、1つの値ではなく文字列の配列を渡します。 署名フィールドは署名グラフィックを表すbase64エンコードされた画像文字列を受け取ることができます。

重要もし setFormFieldValue() がフィールドの値を変更していないように見える場合は、フィールド名が完全に一致しているか確認してください。PDFのフィールド名は大文字と小文字が区別されます。ドキュメント内の実際の名前を列挙するには 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でPDFフォームに入力するには、どのような前提条件が必要ですか?

Node.js 18以上、IronPDFライセンスキー(無料トライアルあり)、およびIronPdfEngineバイナリが必要です。エンジンは@ironsoftware/ironpdfパッケージに同梱され、インストール時に自動的にダウンロードされます。

IronPDF for Node.jsのインストール方法は?

プロジェクトディレクトリでnpm install @ironsoftware/ironpdfを実行します。このコマンドは、Windows、Linux、macOS用のパッケージおよびプラットフォーム固有のバイナリをインストールします。TypeScript型宣言も含まれています。

PDFフォームのフィールド名を見つける方法は?

PDFをPdfDocument.fromFile()で読み込んだ後、await pdf.getFormFieldNames()を呼び出してください。このメソッドは、ドキュメント内のすべてのフィールド名の文字列を配列として返します。PDFのフィールド名は大文字と小文字が区別されるため、返された文字列を正確に使用してください。

チェックボックスとラジオボタンはどのような値の形式を受け入れますか?

チェックボックスはチェックを入れる場合に"true"という文字列を受け入れ、チェックを外す場合に"false"を受け入れます。ラジオボタンは対象のオプションのエクスポート値を文字列として受け入れます。getFormFieldNames()を使用し、PDFフィールドプロパティを確認して、正しいエクスポート値を見つけてください。

入力済みPDFフォームが編集されるのを防ぐ方法はありますか?

すべてのフィールド値を設定した後、saveAs()を実行する前にawait pdf.flattenAllFormFields()を呼び出してください。フラット化は、フィールド値を静的なページコンテンツに結合し、対話型フォームレイヤーを削除します。この操作は保存されたファイルに対して不可逆です。

IronPDF for Node.jsはTypeScriptと一緒に使用できますか?

はい。@ironsoftware/ironpdfパッケージにはTypeScript宣言(.d.tsファイル)が含まれているので、別途型パッケージをインストールしなくても、VS Codeや他のエディターで完全な型チェックとIntelliSenseを利用できます。

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得し、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに惹かれ、コンピューティングを神秘的かつアクセス可能なものとし、創造性と問題解決のための完璧な媒体と考えていました。

Iron Softwareでは、新しいものを創造することと、複雑なコンセプトをより理解しやすくすることを楽しんでいます。Resident Developerの一人として、次世代に専門知識を共有するために、学生を教えることにも志願しました。

Darriusにとって、その仕事は価値があり、実際の影響があるため、満足感があります。

準備はできましたか?
バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか?
サンプルを実行するHTML が PDF に変換されるのを確認します。