Comment remplir des champs de formulaire PDF dans Node.js

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

Remplir des formulaires PDF de manière programmatique dans Node.js vous permet d'automatiser les flux de travail de documents : de la population de formulaires d'application avec des enregistrements de base de données à la génération de certificats personnalisés à grande échelle. IronPDF for Node.js fournit une API simple pour charger des PDF existants, écrire des valeurs dans les champs de formulaire, et enregistrer les documents complétés sans quitter votre environnement JavaScript.

Ce guide couvre l'intégralité du flux de travail : installation du package, application d'une clé de licence, remplissage des champs texte, cases à cocher, listes déroulantes et boutons radio, aplatissement des champs de formulaire pour verrouiller les valeurs, et enregistrement du résultat. Tous les exemples de code utilisent await et le package @ironsoftware/ironpdf.

Démarrage rapide : Remplir un formulaire PDF avec Node.js

Installez le package, puis chargez et remplissez un formulaire en quelques lignes :

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

Quels prérequis dois-je avoir pour remplir des formulaires PDF dans Node.js ?

Avant d'exécuter les exemples de code ci-dessous, vérifiez que trois éléments sont en place : une version prise en charge de Node.js, une clé de licence IronPDF et le binaire IronPdfEngine.

Version de Node.js : IronPDF nécessite Node.js 18 ou supérieur. Téléchargez la version LTS actuelle du site officiel de Node.js. La bibliothèque utilise les E/S asynchrones de Node.js pour toutes les opérations PDF ; ainsi, await ou le chaînage de promesses est le modèle standard utilisé partout. Les anciennes versions de Node.js ne sont pas prises en charge, car le package dépend des fonctionnalités natives ESM et async_hooks qui nécessitent Node.js 18 ou une version supérieure.

Clé de licence : Une clé de licence IronPDF active débloque l'API complète. Commencez un essai gratuit pour obtenir une clé pour le développement et les tests, ou achetez une licence pour une utilisation en production. Pour les options de déploiement (variables d'environnement, fichiers de configuration, gestionnaires de secrets), consultez le guide Utilisation des clés de licence.

IronPdfEngine : le package Node.js inclut IronPdfEngine, un moteur de rendu multiplateforme qui gère la manipulation effective des PDF. Les notes d'installation et spécifiques à la plateforme (Windows, Linux, macOS) sont disponibles dans la documentation Utilisation d'IronPdfEngine.

Comment régler la clé de licence dans le code Node.js ?

Appliquez la clé de licence une seule fois au démarrage de l'application, avant tout appel 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

Le stockage de la clé dans une variable d'environnement (comme indiqué ci-dessus avec process.env.IRONPDF_LICENSE_KEY) permet d'éviter que les identifiants ne soient inclus dans le contrôle de version. La Vue d'ensemble de démarrage couvre des modèles d'initialisation supplémentaires pour différents environnements de déploiement.


Comment installer IronPDF for Node.js?

L'installation d'IronPDF for Node.js ne nécessite qu'une seule commande npm. Exécutez-la dans votre répertoire de projet :

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

Le package est fourni avec des déclarations de types TypeScript, ce qui permet aux projets TypeScript de bénéficier d'une prise en charge complète d'IntelliSense sans avoir besoin d'un package @types distinct. Les binaires spécifiques à la plateforme pour Windows, Linux, et macOS sont téléchargés automatiquement lors de l'installation. Le package @Iron Software/ironpdf sur npm répertorie toutes les versions publiées et les dépendances de pair.

Veuillez noterPour les projets TypeScript, les déclarations .d.ts incluses signifient qu'IntelliSense fonctionne dès l'installation dans VS Code et d'autres éditeurs prenant en charge les services linguistiques TypeScript.

Pour des instructions sur l'ajout d'IronPDF à un monorepo existant ou à un flux de travail basé sur Docker, consultez la documentation d'IronPDF for Node.js.


Comment remplir des formulaires PDF par programmation?

Le chargement d'un PDF et la saisie de valeurs dans ses champs de formulaire nécessitent trois appels asynchrones : PdfDocument.fromFile(), setFormFieldValue() et saveAs(). L'exemple ci-dessous remplit un formulaire d'application multi-champs et l'aplatit optionnellement pour que les valeurs ne puissent pas être modifiées après livraison.

À quoi ressemble un exemple complet de remplissage de formulaire ?

L'exemple suivant charge un PDF avec plusieurs types de champs, les remplit et enregistre le résultat. Pour un examen ciblé sur la création de formulaires plutôt que sur leur remplissage, voyez la page d'exemples de formulaires 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");

    // Case à cocher 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");

    // Case à cocher 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

Après avoir appelé getFormFieldNames(), le tableau renvoyé vous indique les noms de champs utilisés par l'auteur du PDF. C'est le moyen le plus rapide d'éviter les fautes de frappe dans les noms de champs lors de l'intégration de formulaires que vous n'avez pas créés.

ConseilsAppelez getFormFieldNames() une fois pendant le développement pour imprimer les noms exacts des champs dans votre PDF. Le codage en dur d'un nom incorrect est la cause la plus fréquente de champs apparaissant vides après setFormFieldValue().


Comment gérer différents types de champs de formulaire ?

IronPDF prend en charge les types de champs de formulaire standard AcroForm : boîtes de texte, cases à cocher, boutons radio, listes déroulantes, boîtes de liste, et champs de signature. La méthode setFormFieldValue() accepte des valeurs de type chaîne pour tous les types ; pour les champs de type case à cocher et bouton radio, les valeurs acceptées dépendent de la définition spécifique du champ dans le PDF.

Le tableau ci-dessous montre le format des valeurs pour chaque type de champ :

Types de champs de formulaire PDF AcroForm et leurs formats de valeurs acceptés
Type de champFormat de valeurExemple d'application
Texte / MultiligneToute chaîne" Jane Doe "
Case à cocher"true" ou "false""true"
Bouton RadioValeur d'exportation de l'option"Féminin"
Liste déroulante (Combo)Texte d'affichage de l'option"États-Unis"
Boîte de liste (sélection multiple)Tableau de chaînes["Option1", "Option2"]
Date / NumériqueReprésentation en chaîne" 15/06/2024 "

Comment fonctionnent les cases à cocher et les boutons radio ?

Les cases à cocher acceptent "true" pour cocher et "false" pour décocher. Les boutons radio acceptent la valeur d'exportation de l'option à sélectionner -- la chaîne exportée est généralement visible dans les propriétés du champ PDF et est distincte de l'étiquette d'affichage.

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

    // Case à cocher
    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");

    // Case à cocher
    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

Les champs de boîte de liste multi-sélection suivent le même modèle. Quand un champ permet plusieurs sélections, passez un tableau de chaînes plutôt qu'une seule valeur. Les champs de signature peuvent recevoir une chaîne d'image encodée en base64 représentant le graphique de la signature.

ImportantSi setFormFieldValue() ne semble pas modifier la valeur d'un champ, vérifiez que le nom du champ correspond exactement -- les noms de champs PDF sont sensibles à la casse. Utilisez getFormFieldNames() pour lister les noms réels dans le document.


Comment aplatir les champs de formulaire PDF après remplissage ?

Aplatir un formulaire PDF fusionne toutes les valeurs de champ dans le contenu statique de la page, supprimant la couche interactive. Le document résultant ne peut plus être édité, ce qui empêche les modifications accidentelles lors de la distribution et assure un rendu cohérent dans tous les visualisateurs PDF.

Appelez flattenAllFormFields() sur le document chargé après avoir défini toutes les valeurs de champ et avant d'économiser :

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

L'aplatissement est approprié pour les livraisons finales -- contrats après signature, certificats après émission, ou factures après approbation. Pour les documents nécessitant une révision supplémentaire avant finalisation, ignorez flattenAllFormFields() et économisez sans l'inclure.

AvertissementL'aplatissement est irréversible sur la copie enregistrée. Gardez le PDF original, non rempli comme modèle si vous devez régénérer le document.


Quels sont les cas d'utilisation courants pour l'automatisation des formulaires PDF ?

Le remplissage automatique des formulaires élimine la saisie manuelle de données dans les flux de travail de documents à fort volume. Les scénarios suivants couvrent les schémas les plus fréquents que les développeurs mettent en œuvre avec IronPDF.

Traitement des applications : extraire les données des candidats à partir d'une base de données ou d'une API REST et remplir des formulaires PDF pour les services financiers, l'assurance ou les flux de travail d'acquisition gouvernementale. Combinez les formulaires remplis en utilisant l'exemple Fusionner les PDF pour produire un seul dossier de soumission multi-pages.

Génération de factures et de reçus : remplissez les modèles de factures avec des données de lignes de commande, des détails clients et des totaux calculés. Ajoutez des en-têtes et pieds de page en utilisant les techniques montrées dans l'exemple En-têtes et pieds de page HTML.

Génération de certificats et d'attestations : personnalisez les modèles de certificats avec les noms des récipiendaires, les dates d'achèvement et les titres des cours. Ajoutez de la sécurité en utilisant l'exemple Signatures numériques pour éviter la falsification après délivrance. La norme PDF/A est couramment requise pour l'archivage à long terme des certificats dans les industries réglementées.

Génération de rapports : remplissez des modèles de rapports avec des données analytiques ou les résultats d'enquête. Pour les cas où vous devez construire la mise en page du PDF à partir de zéro plutôt que de remplir un formulaire existant, consultez le tutoriel HTML vers PDF.


Quelles sont les prochaines étapes pour remplir des formulaires PDF dans Node.js ?

Ce guide a démontré comment charger un PDF, remplir des champs de texte, cases à cocher, listes déroulantes et boutons radio, aplatir le formulaire pour verrouiller les valeurs, et enregistrer le document complété. La même instance PdfDocument prend en charge d'autres opérations — ajouter des signatures numériques, compresser la sortie ou extraire du texte — sans recharger le fichier.

Commencez un essai gratuit pour tester IronPDF dans votre projet, ou consultez les options de licence pour trouver le plan qui correspond à votre déploiement.

Prêt à voir ce que vous pouvez faire d'autre? Consultez la collection complète de tutoriels Node.js ici : HTML vers PDF dans Node.js

Questions Fréquemment Posées

Quels sont les prérequis nécessaires pour remplir des formulaires PDF en Node.js ?

Vous avez besoin de Node.js 18 ou supérieur, d'une clé de licence IronPDF (un essai gratuit est disponible), et du binaire IronPdfEngine. Le moteur est inclus avec le package @ironsoftware/ironpdf et téléchargé automatiquement lors de l'installation.

Comment installer IronPDF for Node.js ?

Exécutez npm install @ironsoftware/ironpdf dans le répertoire de votre projet. La commande installe le package et ses binaires spécifiques à la plate-forme pour Windows, Linux et macOS. Les déclarations de type TypeScript sont incluses.

Comment découvrir les noms de champ dans un formulaire PDF ?

Appelez await pdf.getFormFieldNames() après avoir chargé le PDF avec PdfDocument.fromFile(). La méthode renvoie un tableau de toutes les chaînes de noms de champ dans le document. Les noms de champ PDF sont sensibles à la casse, utilisez donc les chaînes exactes renvoyées.

Quel format de valeur les cases à cocher et les boutons radio acceptent-ils ?

Les cases à cocher acceptent la chaîne "true" pour cocher et "false" pour décocher. Les boutons radio acceptent la valeur d'exportation de l'option cible sous forme de chaîne. Utilisez getFormFieldNames() et inspectez les propriétés de champ PDF pour trouver la valeur d'exportation correcte.

Comment empêcher qu'un formulaire PDF rempli soit modifié ?

Appelez await pdf.flattenAllFormFields() après avoir défini toutes les valeurs des champs et avant saveAs(). L'aplatissement fusionne les valeurs des champs dans le contenu de page statique et supprime la couche de formulaire interactive. L'opération est irréversible sur le fichier enregistré.

Puis-je utiliser IronPDF for Node.js avec TypeScript ?

Oui. Le package @ironsoftware/ironpdf est livré avec des déclarations TypeScript (.d.ts files), donc vous obtenez une vérification complète des types et IntelliSense dans VS Code et d'autres éditeurs sans installer un package types à part.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite
Prêt à commencer?
Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ?
exécuter un échantillon Regardez votre code HTML se transformer en PDF.