fill-pdf-form

n8n node to fill PDF forms with text, images and annotations natively (no external API)

Package Information

Downloads: 1 weekly / 10 monthly
Latest Version: 1.1.1
Author: Your Name

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)

  1. Dans n8n, allez dans SettingsCommunity Nodes
  2. Sélectionnez Install
  3. Entrez n8n-nodes-fill-pdf-form
  4. 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

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
  • 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

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 :

  1. Ouvrez votre PDF dans Adobe Acrobat ou un lecteur PDF
  2. Activez l'affichage des coordonnées (souvent en bas de la fenêtre)
  3. Survolez l'endroit où vous voulez placer du contenu
  4. 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

  1. Ouvrez le PDF dans Adobe Acrobat
  2. Allez dans Tools → Prepare Form
  3. Les noms des champs s'affichent

Méthode 2 : pdf-lib en ligne

  1. Utilisez pdf-lib playground
  2. Chargez votre PDF
  3. 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

  • pdf-lib : Bibliothèque JavaScript pour manipuler les PDFs
  • fontkit : Support des polices

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 TypeScript
  • npm run dev : Mode watch pour le développement

Contribuer

  1. Fork le projet
  2. Créez une branche (git checkout -b feature/amazing-feature)
  3. Committez vos changements (git commit -m 'Add amazing feature')
  4. Pushez (git push origin feature/amazing-feature)
  5. 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

Discussion