npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-fill-pdf-form

v1.1.1

Published

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

Readme

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: [email protected]

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