Comment remplir des champs de formulaire PDF dans Node.js
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
//: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");
})();
Flux de travail minimal (5 étapes)
1. Installer IronPDF : `npm install @ironsoftware/ironpdf` 2. Définissez votre clé de licence via `IronPdfGlobalConfig.getConfig().licenseKey` 3. Charger le PDF existant avec `PdfDocument.fromFile(path)` 4. Définissez la valeur de chaque champ avec `await pdf.setFormFieldValue(fieldName, value)` 5. Économisez le résultat avec `await pdf.saveAs(outputPath)`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;
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
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.
.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);
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.
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 :
| Type de champ | Format de valeur | Exemple d'application |
|---|---|---|
| Texte / Multiligne | Toute chaîne | " Jane Doe " |
| Case à cocher | "true" ou "false" | "true" |
| Bouton Radio | Valeur 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érique | Repré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);
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.
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);
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.
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.

