Image de couverture : wkhtmltopdf est mort : quelles alternatives modernes pour générer des PDF en PHP ?
tech

wkhtmltopdf est mort : quelles alternatives modernes pour générer des PDF en PHP ?

24 March 2026
6 min de lecture
3 vues
Sébastien Muler

wkhtmltopdf est mort : quelles alternatives modernes pour générer des PDF en PHP ?

Si vous développez des applications PHP depuis quelques années, il y a de fortes chances que vous ayez utilisé wkhtmltopdf pour générer des factures, des rapports ou des documents PDF à partir de templates HTML. Pendant longtemps, c'était la solution de référence : simple, efficace, sans dépendance Java. Mais la réalité s'impose aujourd'hui avec force — wkhtmltopdf est officiellement abandonné, et continuer à l'utiliser en production représente un risque sérieux.

Dans cet article, nous faisons le point sur la situation et vous présentons des alternatives concrètes et modernes pour générer des PDF en PHP sans compromettre la sécurité ni la maintenabilité de vos projets.


Pourquoi wkhtmltopdf est devenu un problème

wkhtmltopdf repose sur Qt, un framework graphique de bureau. Le projet a été abandonné par son mainteneur en 2018, et aucune mise à jour de sécurité n'a été publiée depuis. Ce n'est pas une question de confort — c'est une bombe à retardement.

Voici les problèmes concrets que vous rencontrez aujourd'hui si vous maintenez une application qui en dépend :

  • Vulnérabilités non corrigées : Des CVE critiques (corruption mémoire, injections) ont été identifiées après l'abandon du projet. Aucun patch ne sera jamais publié.
  • Enfer des dépendances : wkhtmltopdf dépend de Qt4 ou Qt5. Qt4 est en fin de vie depuis 2015. Les versions de Qt varient entre vos environnements de développement, de staging et de production, causant des comportements incohérents et des crashs sporadiques.
  • Fuites mémoire : Sur des charges élevées ou des documents complexes, les fuites mémoire s'accumulent et finissent par impacter la stabilité de vos serveurs.
  • Incompatibilité croissante : Les nouvelles distributions Linux et images Docker embarquent des versions de Qt incompatibles avec les binaires wkhtmltopdf disponibles.

La conclusion est sans appel : utiliser wkhtmltopdf en 2024 dans un environnement de production, c'est accepter un risque de sécurité non maîtrisé et une dette technique qui ne fera que croître.


Les alternatives sérieuses pour générer des PDF en PHP

1. Dompdf — La solution native PHP

Dompdf est une bibliothèque 100% PHP qui convertit du HTML/CSS en PDF sans aucune dépendance système externe. C'est l'alternative la plus simple à intégrer dans un projet Symfony ou Laravel existant.

composer require dompdf/dompdf
use Dompdf\Dompdf;

$dompdf = new Dompdf();
$dompdf->loadHtml('<h1>Facture #1234</h1><p>Montant : 150,00 €</p>');
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream('facture.pdf');

Avantages :

  • Aucune dépendance système
  • Installation via Composer en une commande
  • Intégration Symfony native et simple
  • Projet activement maintenu

Limites :

  • Support CSS partiel (pas de Flexbox ni Grid)
  • Moins performant sur des documents très complexes

Dompdf est idéal pour des documents aux mises en page relativement simples : factures, bons de commande, rapports textuels.


2. TCPDF et FPDF — Le contrôle total

TCPDF et son ancêtre FPDF adoptent une approche différente : vous construisez le document programmatiquement, cellule par cellule. C'est plus verbeux, mais vous avez un contrôle absolu sur le résultat.

composer require tecnickcom/tcpdf

Cette approche convient bien aux documents avec des tableaux complexes, des en-têtes répétés, ou des besoins précis en matière de positionnement.

Avantages :

  • Contrôle total sur chaque élément
  • Très stable et mature
  • Performances solides

Limites :

  • Pas de rendu HTML/CSS direct
  • Code plus verbeux et moins maintenable pour des templates complexes

3. Gotenberg — La solution moderne avec Chrome headless

Gotenberg est un service Docker qui expose une API REST pour la conversion HTML en PDF. Il utilise en arrière-plan Chromium headless, offrant un rendu fidèle et complet du HTML5/CSS3 moderne.

# Lancer Gotenberg avec Docker
docker run --rm -p 3000:3000 gotenberg/gotenberg:8
// Appel depuis PHP avec un client HTTP (Symfony HttpClient)
$response = $httpClient->request('POST', 'http://localhost:3000/forms/chromium/convert/html', [
    'body' => [
        'files' => [
            'index.html' => fopen('template.html', 'r'),
        ],
    ],
]);

file_put_contents('document.pdf', $response->getContent());

Avantages :

  • Rendu identique à Chrome — support CSS complet, JavaScript, Web Fonts
  • Isolé dans un container Docker
  • API simple et documentée
  • Activement maintenu

Limites :

  • Requiert Docker dans votre infrastructure
  • Communication réseau (latence à prévoir)
  • Ressource plus lourde qu'une bibliothèque pure PHP

Gotenberg est la meilleure option si vous avez besoin d'un rendu parfait de templates HTML complexes avec du CSS moderne.


4. Browsershot (Laravel/Symfony) — Puppeteer via PHP

Browsershot, développé par Spatie, permet de piloter Puppeteer (Node.js + Chrome headless) depuis PHP.

composer require spatie/browsershot
npm install puppeteer
use Spatie\Browsershot\Browsershot;

Browsershot::html('<h1>Mon document</h1>')
    ->format('A4')
    ->save('document.pdf');

C'est une solution élégante si Node.js est disponible sur votre serveur, avec un rendu Chrome de qualité.


Comment choisir la bonne alternative ?

Critère Dompdf TCPDF Gotenberg Browsershot
Installation ⭐ Très simple ⭐ Simple Moyenne Moyenne
Rendu CSS moderne Partiel ✗ Non ⭐ Excellent ⭐ Excellent
Dépendances système Aucune Aucune Docker Node.js
Performance Bonne Bonne Très bonne Bonne
Adapté Symfony

Notre recommandation chez MulerTech :

  • Pour des factures et documents simplesDompdf, installation immédiate, zéro friction.
  • Pour des documents complexes avec mise en page préciseTCPDF.
  • Pour un rendu HTML/CSS fidèle en production avec Docker → Gotenberg.
  • Pour des prototypes ou projets avec Node.js disponibleBrowsershot.

Conclusion

wkhtmltopdf a rendu de grands services, mais son temps est révolu. Continuer à l'utiliser en 2024, c'est accepter des vulnérabilités de sécurité sans correctif et une dette technique croissante. La bonne nouvelle : les alternatives sont matures, bien maintenues, et s'intègrent parfaitement dans un projet PHP/Symfony moderne.

La migration peut sembler intimidante, mais dans la grande majorité des cas, Dompdf suffit pour remplacer wkhtmltopdf en quelques heures de travail. Pour les besoins plus exigeants, Gotenberg offre un niveau de rendu imbattable avec une architecture propre et containerisée.

N'attendez pas qu'une faille de sécurité vous force la main — planifiez votre migration dès aujourd'hui.


Cet article s'appuie notamment sur l'analyse publiée sur dev.to par Custodia-Admin.

Partager cet article