Générer des PDFs à partir de HTML avec SecretPDF
NicolasBrondinBernard
Apprenez à générer des PDF depuis du HTML avec un seul call d'API !

Article publié le 17/02/2026, dernière mise à jour le 17/02/2026
Générer un PDF en 2026, c’est censé ne plus être un problème technique. Mais le faire simplement, proprement, de manière maintenable, scalable et prête pour la production… ça, c’est une autre histoire.
Dans cet article, nous allons voir comment générer des PDFs à partir d’un template HTML de la manière la plus simple possible avec SecretPDF.
Pourquoi générer des PDFs est souvent complexe ?
Le format PDF est à la fois simple et complexe. Il est simple d’utilisation, car portable (il inclut toutes les ressources nécessaire pour le rendu), mais il est complexe à produire.
Un PDF peut contenir du texte, des polices d’écriture, des images, du vectoriel, etc…
Il est possible de générer un fichier PDF directement depuis le navigateur, mais dès que l’on a besoin d’un rendu légèrement complexe (autrement dit “joli”), c’est un casse-tête, surtout sur mobile.
Si votre objectif est de :
- Générer un vrai document
- Avec un design intéressant
- Du contenu texte sélectionnable (pas seulement une image)
- Sans hack CSS obscur
Alors vous devez générer des PDF côté serveur, ce qui implique de trouver la solution qui convient à vos contrainte, monter une architecture, la dimensionner, faire en sorte que cela n’impacte pas les performances de vos autres applications.
C’est là qu’arrive SecretPDF !

SecretPDF, c’est quoi ?
SecretPDF est un SaaS facile d’utilisation, avec une API moderne pour générer des documents PDF à partir de HTML.
Vous lui envoyez :
- du HTML/CSS (même des classes Tailwind pour le design si vous voulez)
- des données dynamiques
- un format de page
Il vous renvoie :
- un PDF prêt à télécharger
Et en plus l’outil est RGPD-compliant et neutre en carbone. Que demander de plus ?
Le tarif
SecretPDF fonctionne avec un système de crédits (1 pdf = 1 crédit pour les PDF <2Mo)
Vous avez :
- 10 crédits gratuits tous les mois
- Puis 0.01$ par crédit
C’est idéal pour les startups et les SaaS : Pas de document généré, pas de paiement.
D’ailleurs vous n’êtes même pas obligé de rentrer votre carte bancaire pour commencer.
À noter également que vous pouvez générer autant de documents de test que vous désirez, grâce à une option “sandbox” qui vous permet de tester vos templates gratuitement !
Etape 1 : Créer un compte
Pour créer un compte, il suffit de connecter son compte Github, en un seul clic !
Ensuite, vous serez guidé vers la création de votre premier template et de votre première clé d’API. L’un des gros avantages de SecretPDF est qu’il vous permet de créer vos templates directement de puis l’interface (avec une preview) ou bien depuis l’API :

Étape 2 : Installer le client
Vous pouvez utiliser l’API avec n’importe quel langage ou framework en suivant la documentation officielle, mais vous pouvez également utiliser le client NodeJS dédié pour vous faciliter la vie.
Dans votre projet Node.js exécutez la commande suivante :
npm install @secretpdf/sdk
Puis dans votre code, initialisez-le :
import SecretPDF from "@secretpdf/sdk";
const client = new SecretPDF({
apiKey: "<secret>",
});
Il est évidemment conseillé de définir votre clé API dans vos variables d’environnement
Etape 3 (optionnelle) : Créer un template depuis l’API
Si vous préférez créer votre premier template directement depuis l’API, c’est possible, comme ceci :
const response = await client.createTemplate({
name: "Facture",
size: "A4",
content: `
<main class="p-10">
<h1 class="text-3xl font-bold text-blue-600">
Facture
</h1>
<p>Prestataire : {{name}} (SIRET {{siret}})</p>
<p>Montant: {{amount}}€</p>
<p class="mt-4 text-gray-700">
Merci pour votre confiance.
</p>
</main>
`,
});
const templateId = response.data.id;
Je vous conseille quand même d’utiliser l’interface, cela vous facilitera la vie.
Étape 4 : Générer votre premier PDF
Voici l’exemple le plus simple possible pour générer un PDF à partir de votre template :
const response = await client.generate({
sandbox: true,
templateId: "<template_id>",
data: {
name: "Nicolas Brondin-Bernard",
siret: "784 671 695 00103",
amount: 139.99,
date: new Date()
}
});
sandboxpermet de générer un document de test avec un watermark par dessus, ce qui ne consommera aucun crédit.
La réponse contient une simple propriété data avec le contenu du fichier généré (encodé en Base64), c’est aussi simple que ça !
Étape 5 (optionnelle) : Sauvegarder le fichier sur disque
Rien en vous oblige à stocker le fichier généré, vous pouvez par exemple l’envoyer en réponse HTTP à votre utilisateur, mais si vous souhaitez le faire, rien de plus simple :
import fs from "fs";
const response = await client.generate({
//...
});
const pdfBuffer = Buffer.from(result.content, 'base64');
fs.writeFileSync('output.pdf', pdfBuffer);
Et voilà, le tour est joué !
Pas de spam. Uniquement du contenu gratuit, des news et toujours plus de ressources pour monter en compétences !
Rejoignez +1500 développeurs
Aucun commentaire pour l'instant