Alternatives · Puppeteer
De wkhtmltopdf à Puppeteer : ce qui change
Puppeteer, la bibliothèque Node.js qui pilote Chrome (Apache-2.0), imprime avec page.pdf() ; la page d’état de wkhtmltopdf la suggère pour les pages au JavaScript dynamique. pdfkiln imprime avec le même Chromium, mais répond à la ligne de commande de wkhtmltopdf.
Ce qui change en passant de wkhtmltopdf à Puppeteer
- Du code au lieu d’une ligne de commande. Un programme Node.js lance le navigateur, ouvre la page et appelle
page.pdf(). Les bibliothèques qui appellent wkhtmltopdf, knp-snappy, pdfkit, wicked_pdf et les autres, n’appellent pas Puppeteer. - Les options. Celles de wkhtmltopdf deviennent les options PDF de Puppeteer (
format,margin,scale,printBackground,pageRanges…) ou du code ; la page de couverture et la table des matières n’ont pas d’équivalent. - Les en-têtes et pieds de page. Ceux de Puppeteer sont des gabarits HTML remplis par cinq classes (
date,title,url,pageNumber,totalPages). Les--header-htmlet--footer-htmlde wkhtmltopdf sont des pages à part entière, avecpage,topage,sectionet d’autres dans leur adresse, et leur JavaScript : les modèles qui s’en servent, ceux d’Odoo et de Frappe entre autres, sont à réécrire. - La mise en page. Chrome met la page en page comme un navigateur, sans les particularités de wkhtmltopdf (la réduction à 0,8,
@pageignoré,flexetgridignorés…) : les modèles réglés pour wkhtmltopdf peuvent changer de sauts de page et de nombre de pages. - Le navigateur. L’installation de Puppeteer télécharge Chrome for Testing, environ 282 Mo sous Linux, et
chrome-headless-shell. - Les adresses internes. La page charge ce qu’elle demande ; la tenir à l’écart des adresses internes, le problème de la CVE-2022-35583, revient à votre code, par l’interception des requêtes.
Quand Puppeteer est le bon choix
Du nouveau code Node.js, ou plus que des PDF : captures, tests, extraction de données, une page qui demande une connexion ou un clic avant d’être imprimée.
Quand c’est pdfkiln
Du code ou des bibliothèques qui appellent wkhtmltopdf aujourd’hui, des modèles dont le nombre de pages ne doit pas changer, un autre langage que JavaScript, pas d’automatisation de navigateur à écrire : pdfkiln prend la place de wkhtmltopdf, Chromium dessous, avec les émulations qui gardent ses pages. Appelé pdfkiln, il donne le CSS actuel de Chrome sans elles.
Sources
Les options PDF de Puppeteer, son installation, sa licence sur GitHub, et la page d’état de wkhtmltopdf, lus le 29 octobre 2026.