TAKUMI-PDF : générer des PDF depuis du JSX sans lancer Chromium

https://takumi.kane.tw

📌 TAKUMI-PDF est un moteur de génération de PDF qui transforme du JSX, du HTML et du CSS, y compris des classes Tailwind, en documents paginés sans démarrer de navigateur headless.

Générer un PDF côté serveur finit souvent par impliquer Puppeteer, Playwright ou une installation complète de Chrome. Pour une facture ou un rapport, cela ajoute un processus à démarrer, une dépendance lourde à déployer et parfois un démarrage à froid disproportionné par rapport au document à produire. Takumi prend une autre direction : un moteur Rust compilé en WebAssembly écrit directement les octets du PDF.

L’usage reste proche de ce que l’on écrit déjà dans une interface React. Vous décrivez votre document avec des éléments JSX, des propriétés CSS ou des utilitaires Tailwind, puis render() renvoie un Uint8Array à enregistrer dans un fichier. Les pages sont générées au fil du contenu, avec une taille A4 par défaut, des marges configurables et des en-têtes ou pieds de page répétés. Les numéros de page peuvent être ajoutés directement dans le JSX.

La version takumi-pdf 0.4 ajoute surtout une dimension plus sérieuse que le simple export d’une carte graphique. La sortie PDF/A vise les documents d’archives, les factures électroniques et les workflows où la conformité doit tenir dans le temps. Le rendu peut aussi être balisé pour la structure et l’accessibilité, avec du texte sélectionnable, des signets et des polices incorporées en sous-ensembles.

Les points qui m’ont retenu :

  • 📄 PDF paginés depuis JSX, HTML et Tailwind
  • ⚡ Pas de Chromium ni de processus navigateur à maintenir
  • 🧾 Sortie PDF/A pour l’archivage et les factures électroniques
  • ♿ Structure balisée, texte sélectionnable et PDF/UA-1 prévu
  • 🧩 En-têtes, pieds de page, liens, signets et sauts de page CSS
  • 🌐 Node.js, Bun et Cloudflare Workers

Le moteur ne se limite pas au PDF. Takumi peut aussi produire des images, du SVG et des animations, avec le même arbre de nœuds comme représentation intermédiaire. Côté CSS, le projet annonce notamment Grid, clip-path, les masques, les blend modes, background-clip: text, les sélecteurs complexes et les polices WOFF2. C’est plus ambitieux qu’un petit sous-ensemble Flexbox destiné uniquement aux cartes Open Graph.

Je trouve l’approche intéressante pour les équipes qui veulent garder leurs composants React tout en générant des documents imprimables. Elle évite de maintenir un template parallèle dans une librairie PDF spécialisée. En contrepartie, Takumi ne cherche pas à reproduire Chrome au pixel près. Certaines propriétés restent absentes, et les images distantes doivent être préchargées. Pour une page web complète ou un rendu CSS très particulier, Puppeteer reste le choix plus sûr.

Pour une facture, un rapport ou une attestation générée dans un worker, takumi-pdf propose donc un compromis assez propre : une API familière, un déploiement léger et un contrôle plus explicite sur la conformité du document.

Sources

Site officiel

Dépôt GitHub

Package takumi-pdf

Publications similaires

Laisser un commentaire