Package Information
Documentation
n8n-nodes-fill-pdf-form
Node n8n pour remplir des formulaires PDF de manière native (sans API externe).
Ce node permet de :
- Remplir les champs de formulaires PDF interactifs (texte et checkboxes)
- Ajouter du texte personnalisé à des positions spécifiques
- Insérer des images (signatures, logos, etc.)
- Aplatir le PDF pour le rendre non-modifiable
Installation
Dans n8n (Community Nodes)
- Dans n8n, allez dans Settings → Community Nodes
- Sélectionnez Install
- Entrez
n8n-nodes-fill-pdf-form - Acceptez les risques et cliquez sur Install
Le node sera installé et disponible immédiatement !
Via npm
Si vous hébergez n8n vous-même :
npm install n8n-nodes-fill-pdf-form
Puis redémarrez n8n.
Fonctionnalités
1. Remplir les champs de formulaire
Le node peut remplir automatiquement les champs de formulaire existants dans un PDF :
- Champs texte
- Checkboxes
2. Ajouter du texte personnalisé
Ajoutez du texte n'importe où sur le PDF avec :
- Position personnalisable (X, Y)
- Choix de la police (Helvetica, Times Roman, Courier)
- Taille de police configurable
- Couleur personnalisable (format hexadécimal)
3. Insérer des images
Insérez des images (PNG ou JPG) :
- Depuis une URL
- Depuis des données binaires (ex: résultat d'un autre node)
- Position et dimensions personnalisables
4. Options avancées
- Flatten PDF : Rend le PDF non-modifiable en convertissant les champs en contenu statique
Exemples d'utilisation
Exemple 1 : Remplir un formulaire simple
Configuration :
- Source PDF :
From URL - PDF URL :
https://example.com/form.pdf - Form Fields :
- Field Name:
firstName, Value:John - Field Name:
lastName, Value:Doe - Field Name:
email, Value:john@example.com
- Field Name:
Exemple 2 : Ajouter une signature
Configuration :
- Source PDF :
From Binary Data - Images :
- Image URL:
https://example.com/signature.png - X:
50, Y:100 - Width:
150, Height:50
- Image URL:
- Options : ✅ Flatten PDF
Exemple 3 : Générer un document personnalisé
Configuration :
- Text Annotations :
- Text:
Contrat signé le 2024-01-15 - Page:
0, X:100, Y:750 - Font Size:
14, Font:Helvetica Bold
- Text:
Configuration
Source PDF
- From URL : Spécifiez l'URL du PDF à modifier
- From Binary Data : Utilisez un PDF depuis une propriété binaire (ex: depuis Google Drive, Dropbox, etc.)
Format de sortie
- Binary : Retourne le PDF dans une propriété binaire (pour l'enregistrer ou l'envoyer par email)
- Base64 : Retourne le PDF encodé en base64 dans les données JSON
Coordonnées
⚠️ Important : Les coordonnées dans les PDFs :
- X : Distance depuis le bord gauche (en points, 1 point ≈ 0.35mm)
- Y : Distance depuis le bord INFÉRIEUR (pas du haut !)
- Une page A4 fait environ 595 x 842 points
Astuce : Pour trouver les bonnes coordonnées :
- Ouvrez votre PDF dans Adobe Acrobat ou un lecteur PDF
- Activez l'affichage des coordonnées (souvent en bas de la fenêtre)
- Survolez l'endroit où vous voulez placer du contenu
- Notez les coordonnées X et Y
Trouver les noms des champs de formulaire
Si vous ne connaissez pas les noms des champs de votre PDF :
Méthode 1 : Adobe Acrobat
- Ouvrez le PDF dans Adobe Acrobat
- Allez dans Tools → Prepare Form
- Les noms des champs s'affichent
Méthode 2 : pdf-lib en ligne
- Utilisez pdf-lib playground
- Chargez votre PDF
- Utilisez
form.getFields()pour lister tous les champs
Méthode 3 : Code JavaScript
const { PDFDocument } = require('pdf-lib');
const fs = require('fs');
async function getFields() {
const pdfBytes = fs.readFileSync('form.pdf');
const pdfDoc = await PDFDocument.load(pdfBytes);
const form = pdfDoc.getForm();
const fields = form.getFields();
fields.forEach(field => {
console.log(`Field name: ${field.getName()}`);
});
}
getFields();
Workflow d'exemple
Voici un workflow complet pour remplir un formulaire W9 et l'envoyer par email :
1. HTTP Request → Télécharger le formulaire W9
2. Fill PDF Form → Remplir les champs
- name: "John Doe"
- businessName: "Acme Inc"
- ssn: "123-45-6789"
3. Fill PDF Form → Ajouter la signature (image)
- Image URL: {{$json.signatureUrl}}
- Position: x=400, y=150
4. Gmail → Envoyer par email avec le PDF en pièce jointe
Technologies utilisées
Développement
Structure du projet
.
├── nodes/
│ └── FillPdfForm/
│ ├── FillPdfForm.node.ts # Code principal du node
│ └── fillpdfform.svg # Icône du node
├── package.json
├── tsconfig.json
└── README.md
Scripts disponibles
npm run build: Compile le TypeScriptnpm run dev: Mode watch pour le développement
Contribuer
- Fork le projet
- Créez une branche (
git checkout -b feature/amazing-feature) - Committez vos changements (
git commit -m 'Add amazing feature') - Pushez (
git push origin feature/amazing-feature) - Ouvrez une Pull Request
Support & Contribution
Rapporter un bug
Ouvrez une issue sur GitHub
Contribuer
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une Pull Request.
Licence
MIT - voir le fichier LICENSE
Roadmap
Fonctionnalités futures possibles :
- Support des radio buttons
- Support des dropdown/combo boxes
- Extraction automatique des noms de champs d'un PDF
- Support de polices personnalisées (.ttf)
- Rotation d'images
- Dessiner des formes (rectangles, cercles, lignes)
- Fusionner plusieurs PDFs
- Ajouter des pages
FAQ
Q: Le node fonctionne-t-il hors ligne ?
R: Oui ! Ce node fonctionne entièrement en local sans dépendance à une API externe.
Q: Quels formats d'image sont supportés ?
R: PNG et JPG uniquement.
Q: Puis-je utiliser des polices personnalisées ?
R: Pour l'instant, seules les polices standard PDF sont supportées (Helvetica, Times Roman, Courier).
Q: Comment puis-je aplatir un PDF ?
R: Activez l'option "Flatten PDF" dans les options du node.
Q: Le node fonctionne-t-il avec des PDFs protégés par mot de passe ?
R: Pas encore, mais c'est dans la roadmap.
Auteur
Créé avec ❤️ pour la communauté n8n