Wie fülle ich PDF-Formularfelder in Node.js aus

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

Das programmgesteuerte Ausfüllen von PDF-Formularen in Node.js ermöglicht die Automatisierung von Dokumenten-Workflows: von der Vorbefüllung von Antragsformularen mit Datenbankeinträgen bis hin zur Erstellung personalisierter Zertifikate in großem Maßstab. IronPDF for Node.js bietet eine einfache API zum Laden bestehender PDFs, Schreiben von Werten in Formularfelder und Speichern der ausgefüllten Dokumente, ohne die JavaScript-Umgebung zu verlassen.

Diese Anleitung deckt den vollständigen Workflow ab: Installation des Pakets, Anwenden eines Lizenzschlüssels, Ausfüllen von Textfeldern, Kontrollkästchen, Dropdown-Menüs und Optionsfeldern, Flattening von Formularfeldern zum Sperren von Werten und Speichern der Ausgabe. Alle Code-Beispiele verwenden await und das @ironsoftware/ironpdf-Paket.

Schnellstart: Ausfüllen eines PDF-Formulars in Node.js

Installieren Sie das Paket, laden und füllen Sie dann ein Formular in wenigen Zeilen aus:

//: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

Welche Voraussetzungen brauche ich, um PDF-Formulare in Node.js auszufüllen?

Bevor Sie die folgenden Code-Beispiele ausführen, stellen Sie sicher, dass drei Voraussetzungen erfüllt sind: eine unterstützte Node.js-Version, ein IronPDF-Lizenzschlüssel und die IronPdfEngine-Binärdatei.

Node.js-Version: IronPDF erfordert Node.js 18 oder höher. Laden Sie die aktuelle LTS-Version von der offiziellen Node.js-Website herunter. Die Bibliothek nutzt asynchrones I/O von Node.js für alle PDF-Operationen, daher ist await oder Promise-Chaining durchgehend das Standardmuster. Ältere Versionen von Node.js werden nicht unterstützt, da das Paket von nativen ESM- und async_hooks-Funktionen abhängt, die Node.js 18+ erfordern.

Lizenzschlüssel: Ein aktiver IronPDF-Lizenzschlüssel schaltet die vollständige API frei. Starten Sie eine kostenlose Testversion, um einen Schlüssel für Entwicklung und Testen zu erhalten, oder erwerben Sie eine Lizenz für den Produktionseinsatz. Für Bereitstellungsoptionen (Umgebungsvariablen, Konfigurationsdateien, Geheimnisverwalter) siehe den Verwendung von Lizenzschlüsseln-Leitfaden.

IronPdfEngine: Das Node.js-Paket enthält IronPdfEngine, eine plattformübergreifende Rendering-Engine, die die eigentliche PDF-Bearbeitung übernimmt. Einrichtungs- und plattformspezifische Hinweise (Windows, Linux, macOS) finden Sie in der Verwenden Sie IronPdfEngine-Dokumentation.

Wie setze ich meinen Lizenzschlüssel im Node.js-Code?

Wenden Sie den Lizenzschlüssel einmalig beim Start der Anwendung an, bevor PdfDocument aufgerufen wird:

//: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

Durch das Speichern des Schlüssels in einer Umgebungsvariablen (wie oben mit process.env.IRONPDF_LICENSE_KEY gezeigt) werden Anmeldedaten aus der Quellcodeverwaltung herausgehalten. Das Get Started Overview deckt zusätzliche Initialisierungsmuster für verschiedene Bereitstellungsumgebungen ab.


Wie installiere ich IronPDF for Node.js?

Die Installation von IronPDF for Node.js erfordert nur einen einzigen npm-Befehl. Führen Sie ihn in Ihrem Projektverzeichnis aus:

//: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

Das Paket enthält TypeScript-Typdeklarationen, sodass TypeScript-Projekte volle IntelliSense-Unterstützung erhalten, ohne dass ein separates @types-Paket erforderlich ist. Plattformspezifische Binärdateien für Windows, Linux und macOS werden während der Installation automatisch heruntergeladen. Das @Iron Software/ironpdf-Paket auf npm listet alle veröffentlichten Versionen und Peer-Abhängigkeiten.

Hinweis:Für TypeScript-Projekte bedeuten die enthaltenen .d.ts-Deklarationen, dass IntelliSense in VS Code und anderen Editoren, die TypeScript-Sprachdienste unterstützen, sofort einsatzbereit ist.

Für Anleitungen zum Hinzufügen von IronPDF zu einem bestehenden Monorepo oder Docker-basierten Workflow siehe die IronPDF for Node.js-Dokumentation.


Wie fülle ich PDF-Formulare programmatisch aus?

Das Laden einer PDF-Datei und das Schreiben von Werten in deren Formularfelder erfordert drei asynchrone Aufrufe: PdfDocument.fromFile(), setFormFieldValue() und saveAs(). Das untenstehende Beispiel füllt ein mehrfeldiges Antragsformular aus und flacht es optional ab, sodass die Werte nach der Lieferung nicht mehr geändert werden können.

Wie sieht ein vollständiges Beispiel zum Ausfüllen von Formularen aus?

Das folgende Beispiel lädt ein PDF mit mehreren Feldtypen, füllt sie aus und speichert das Ergebnis. Für einen fokussierten Blick auf das Erstellen von Formularen anstelle des Ausfüllens, sehen Sie sich die PDF-Formularbeispiele-Seite an.

//: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");

    // Kontrollkästchen 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");

    // Kontrollkästchen 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

Nach dem Aufruf von getFormFieldNames() gibt das zurückgegebene Array an, welche Feldnamen der PDF-Autor verwendet hat. Dies ist der schnellste Weg, um Tippfehler in Feldnamen zu vermeiden, wenn Sie mit Formularen integrieren, die Sie nicht erstellt haben.

TippsRufen Sie getFormFieldNames() einmal während der Entwicklung auf, um die genauen Feldnamen in Ihr PDF zu PRINTEN. Das Hardcodieren des falschen Namens ist der häufigste Grund dafür, dass Felder nach setFormFieldValue().
leer erscheinen.)}]


Wie gehe ich mit verschiedenen Formularfeldtypen um?

IronPDF unterstützt die standardmäßigen AcroForm-Feldtypen: Textboxen, Kontrollkästchen, Optionsfelder, Dropdowns, Listenfelder und Unterschriftsfelder. Die Methode setFormFieldValue() akzeptiert Zeichenfolgenwerte für alle Typen; bei Kontrollkästchen und Optionsfeldern hängen die akzeptierten Werte von der spezifischen Felddefinition im PDF ab.

Die folgende Tabelle zeigt das Wertformat für jeden Feldtyp:

PDF AcroForm-Feldtypen und ihre akzeptierten Wertformate
FeldtypWertformatBeispiel
Text / MehrzeiligJeder String"Jane Doe"
Kontrollkästchen"true" oder "false""true"
OptionsschalterExportwert der Option"Weiblich"
Dropdown (Kombinationsfeld)Anzeigetext der Option"Vereinigte Staaten"
Listenfeld (Mehrfachauswahl)Array von Strings["Option1", "Option2"]
Datum / NumerischString-Darstellung"15.06.2024"

Wie funktionieren Kontrollkästchenen und Optionsschalter?

Kontrollkästchenen akzeptieren "true" zum Aktivieren und "false" zum Deaktivieren. Optionsschalter akzeptieren den Exportwert der Option zur Auswahl – der exportierte String ist normalerweise in den Feldeigenschaften des PDFs sichtbar und unterscheidet sich von der Anzeigeetikette.

//: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");

    // Kontrollkästchen
    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");

    // Kontrollkästchen
    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

Mehrfachauswahl-Listenfeld-Felder folgen demselben Muster. Wenn ein Feld mehrere Auswahlen zulässt, geben Sie ein Array von Strings anstelle eines einzelnen Werts an. Signaturfelder können eine base64-kodierte Bildzeichenfolge erhalten, die die Signaturgrafik darstellt.

WichtigWenn setFormFieldValue() den Wert eines Feldes nicht zu ändern scheint, überprüfen Sie, ob der Feldname exakt übereinstimmt – bei PDF-Feldnamen wird zwischen Groß- und Kleinschreibung unterschieden. Verwenden Sie getFormFieldNames(), um die tatsächlichen Namen im Dokument aufzulisten.


Wie glätte ich PDF-Formularfelder, nachdem sie gefüllt wurden?

Beim Glätten eines PDF-Formulars werden alle Feldwerte in den statischen Seiteninhalt integriert und die interaktive Ebene entfernt. Das resultierende Dokument kann nicht weiter bearbeitet werden, was versehentliche Änderungen während der Verteilung verhindert und eine konsistente Darstellung in allen PDF-Viewern gewährleistet.

Rufen Sie flattenAllFormFields() im geladenen Dokument auf, nachdem Sie alle Feldwerte festgelegt haben und bevor Sie speichern:

//: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

Das Glätten ist für endgültige Lieferungen geeignet – Verträge nach der Unterzeichnung, Zertifikate nach der Ausstellung oder Rechnungen nach der Genehmigung. Bei Dokumenten, die vor der Fertigstellung noch einer weiteren Überprüfung bedürfen, überspringen Sie flattenAllFormFields() und speichern Sie ohne diesen Abschnitt.

WarnungDas Glätten ist in der gespeicherten Kopie nicht umkehrbar. Behalten Sie das ursprüngliche, nicht ausgefüllte PDF als Vorlage, falls Sie das Dokument erneut generieren müssen.


Was sind häufige Anwendungsfälle für die Automatisierung von PDF-Formularen?

Automatisiertes Ausfüllen von Formularen entfernt manuelle Eingaben in hochvolumigen Dokumenten-Workflows. Die folgenden Szenarien decken die häufigsten Muster ab, die Entwickler mit IronPDF implementieren.

Antragsbearbeitung: Ziehen Sie Bewerberdaten aus einer Datenbank oder REST-API ab und füllen Sie PDF-Formulare für Finanzdienstleistungen, Versicherungen oder staatliche Aufnahme-Workflows aus. Kombinieren Sie ausgefüllte Formulare mit dem PDFs zusammenführen Beispiel, um ein einziges mehrseitiges Einreichungspaket zu erstellen.

Rechnungs- und Beleggenerierung: Füllen Sie Rechnungsvorlagen mit Postendaten, Kundendetails und berechneten Summen. Fügen Sie Seitenköpfe und -füße unter Verwendung der in dem HTML-Kopfund-Fußzeilen-Beispiel gezeigten Techniken hinzu.

Erzeugung von Zertifikaten und Berechtigungen: Personalisieren Sie Zertifikatsvorlagen mit Empfängernamen, Abschlussdaten und Kurstiteln. Fügen Sie mithilfe des Digitale Signaturen Beispiels Sicherheit hinzu, um Manipulationen nach der Ausstellung zu verhindern. Der PDF/A-Standard ist häufig für die Langzeitarchivierung von Zertifikaten in regulierten Branchen erforderlich.

Berichtserstellung: Füllen Sie Berichtsvorlagen mit Analysedaten oder Umfrageergebnissen. Für Fälle, in denen Sie das PDF-Layout von Grund auf neu erstellen müssen, anstatt ein bestehendes Formular zu füllen, sehen Sie das HTML zu PDF Tutorial.


Was sind die nächsten Schritte beim Ausfüllen von PDF-Formularen in Node.js?

Dieses Handbuch hat gezeigt, wie man ein PDF lädt, Textfelder, Kontrollkästchenes, Dropdowns und Optionsschalter ausfüllt, das Formular glättet, um Werte zu sperren, und das abgeschlossene Dokument speichert. Dieselbe PdfDocument-Instanz unterstützt weitere Operationen – Hinzufügen digitaler Signaturen, Komprimieren der Ausgabe oder Extrahieren von Text – ohne die Datei neu laden zu müssen.

Starten Sie eine kostenlose Testversion, um IronPDF in Ihrem Projekt zu testen, oder sehen Sie die Lizenzierungsmöglichkeiten, um den Plan zu finden, der zu Ihrer Bereitstellung passt.

Bereit zu sehen, was Sie sonst noch tun können? Sehen Sie sich die vollständige Node.js-Tutorial-Sammlung hier an: HTML zu PDF in Node.js

Häufig gestellte Fragen

Welche Voraussetzungen muss ich erfüllen, um PDF-Formulare in Node.js auszufüllen?

Sie benötigen Node.js 18 oder höher, einen IronPDF-Lizenzschlüssel (ein kostenloser Test steht zur Verfügung) und die IronPdfEngine-Binärdatei. Die Engine ist im @ironsoftware/ironpdf-Paket enthalten und wird während der Installation automatisch heruntergeladen.

Wie installiere ich IronPDF for Node.js?

Führen Sie npm install @ironsoftware/ironpdf in Ihrem Projektverzeichnis aus. Der Befehl installiert das Paket und die plattformspezifischen Binärdateien für Windows, Linux und macOS. TypeScript-Typdeklarationen sind enthalten.

Wie entdecke ich die Feldnamen in einem PDF-Formular?

Rufen Sie await pdf.getFormFieldNames() auf, nachdem Sie das PDF mit PdfDocument.fromFile() geladen haben. Die Methode gibt ein Array aller Feldnamen-Strings im Dokument zurück. PDF-Feldnamen sind Groß- und Kleinschreibung sensibel, verwenden Sie daher die genauen zurückgegebenen Strings.

Welches Wertformat akzeptieren Kontrollkästchen und Optionsfelder?

Kontrollkästchen akzeptieren den String "true" zum Aktivieren und "false" zum Deaktivieren. Optionsfelder akzeptieren den Exportwert der Zieloption als String. Verwenden Sie getFormFieldNames() und überprüfen Sie die PDF-Feldeigenschaften, um den korrekten Exportwert zu finden.

Wie verhindere ich, dass ein ausgefülltes PDF-Formular bearbeitet wird?

Rufen Sie await pdf.flattenAllFormFields() nach dem Setzen aller Feldwerte und vor saveAs() auf. Das Flattening verschmilzt die Feldwerte mit dem statischen Seiteninhalt und entfernt die interaktive Formularebene. Der Vorgang ist bei der gespeicherten Datei irreversibel.

Kann ich IronPDF for Node.js mit TypeScript verwenden?

Ja. Das @ironsoftware/ironpdf-Paket wird mit TypeScript-Deklarationen (.d.ts-Dateien) geliefert, sodass Sie in VS Code und anderen Editoren eine vollständige Typprüfung und IntelliSense erhalten, ohne ein separates Typpaket installieren zu müssen.

Darrius Serrant
Full-Stack-Software-Ingenieur (WebOps)

Darrius Serrant hat einen Bachelor-Abschluss in Informatik von der University of Miami und arbeitet als Full-Stack-WebOps-Marketing-Ingenieur bei Iron Software. Seit seiner Jugend vom Programmieren angezogen, sah er die Informatik als sowohl mysteriös als auch zugänglich, was es zum perfekten Medium für Kreativität und Problemlösung ...

Weiterlesen
Bereit anzufangen?
Version: 2026.5 just released
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis?
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.