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を提供します。

このガイドは、パッケージのインストール、ライセンスキーの適用、テキストフィールド、チェックボックス、ドロップダウン、ラジオボタンの記入、値をロックするためのフォームフィールドのフラット化、出力の保存という完全なワークフローをカバーします。 すべてのコード例は、@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");
})();
JAVASCRIPT

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

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

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

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

IronPdfEngine: Node.jsパッケージには、IronPdfEngine、実際のPDF操作を処理するクロスプラットフォームのレンダリングエンジンが含まれています。 セットアップとプラットフォーム固有のメモ(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;
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パッケージなしでフルインテリセンスサポートを得ることができます。 Windows、Linux、およびmacOS向けのプラットフォーム固有のバイナリは、インストール時に自動的にダウンロードされます。 npmでの@Iron Software/ironpdf パッケージにはすべての公開済みバージョンとピア依存関係が記載されています。

TypeScriptプロジェクトでは、同梱されている.d.ts宣言により、VS CodeやTypeScript言語サービスをサポートする他のエディターでインテリセンスがすぐに機能します。

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


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

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

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

以下の例は、いくつかのフィールドタイプを持つ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の中の正確なフィールド名を印刷します。 間違った名前をハードコーディングすることは、setFormFieldValue()後にフィールドが空のまま表示される最も一般的な原因です。


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

私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

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

Milan Jovanovic

Microsoft MVP

ケーススタディを見る
Icon Quote related to 完全なフォーム記入の例はどのように見えますか?

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

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

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る
Icon Quote related to 完全なフォーム記入の例はどのように見えますか?

IronSuiteは私たちの業務において重要な役割を果たしています。これらは、フロアプランの作成や在庫管理の改善を含め、ビジネス全体の効率を向上させるツールです。

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

David Jones

リードソフトウェアエンジニア、Agorus Build

ケーススタディを見る

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

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

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

PDF AcroForm フィールドタイプとその受け入れ可能な値の形式
フィールドタイプ値の形式翻訳例
テキスト / 複数行任意の文字列"Jane Doe"
チェックボックス"true" または "false""true"
ラジオボタンオプションのエクスポート値"女性"
ドロップダウン(コンボ)オプションの表示テキスト"アメリカ合衆国"
リストボックス(マルチセレクト)文字列の配列["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);
//: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エンコードされた画像文字列を受け取ることができます。

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.6 リリースされたばかり
Still Scrolling Icon

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

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