Gotenberg

Écrit le 03/01/2026

Suite à la découverte de Gotenberg lors de la Symfony Live 2025, j'ai pris le temps d’écrire une petite sandbox pour tester cette alternative sérieuse à la génération de PDF.

 

  1. Pourquoi les outils PHP classiques ne suffisent plus ?

Le constat est simple : la plupart des bibliothèques PHP natives (DomPDF, FPDF, TCPDF, ….) accusent leur âge. Lors de mes tests, j'ai remarqué que le CSS n'est pas toujours bien référencé et que les images ne sont pas systématiquement récupérées ou cassées. Pour obtenir des fonctionnalités avancées comme le split ou merge de pdfs, il faut souvent cumuler plusieurs bibliothèques, dont certaines ne sont plus maintenues.

Gotenberg n'est pas une bibliothèque PHP, c'est une API stateless écrite en Go, distribuée via Docker. Il agit comme une interface qui délègue le travail :

  • Chromium : Pour transformer vos fichiers Twig/HTML ou des URL en PDF avec un rendu identique à votre navigateur.
  • LibreOffice : Pour une conversion parfaite des documents Word et PowerPoint.
  • PDF Engines : Pour toutes les opérations de manipulation de PDF.

     
  1. Mise en œuvre dans Symfony

L'intégration se fait idéalement via le bundle sensiolabs/GotenbergBundle. Il propose un adaptateur Symfony, une gestion simplifiée des assets Twig et une configuration directe en YAML.

Twig vers PDF

Le rendu à partir de Twig est bien meilleur qu'avec les solutions classiques :

  • Flexbox est parfaitement géré.
  • L'intégration des images (distantes et locales via gotenberg_asset()) est très simple.
  • Les polices (fonts) sont intégrées nativement.
     

La puissance du moteur Office

C'est sans doute la fonctionnalité la plus impressionnante. La conversion de fichiers Word (.docx) ou PowerPoint (.pptx) offre une mise en page et une pagination quasi parfaites, même sur des documents complexes.

Split, Merge et Sécurité

Gotenberg permet de manipuler les fichiers PDF (découpage par pages ou fusion) avec une performance très correcte. La gestion des mots de passe est également disponible (actuellement en version 1.x-dev).

 

  1. Scalabilité et Webhooks

Pour les projets à forte charge, Gotenberg supporte nativement le mode asynchrone. L'utilisation des Webhooks permet de récupérer des informations (comme les headers de retour) pour variabiliser vos actions post-génération.

J'ai également testé la génération de 100 PDF en une minute : c'est logiquement un peu long en synchrone tout en restant raisonnable, l’option asynchrone étant toujours possible bien sûr.

 

  1. Bilan

 

Critère

Solutions PHP classiques

Gotenberg (via Symfony)

Moteur de rendu

Limité / Interne

Chromium

CSS Moderne

Souvent cassé (Flexbox...)

Support complet

Formats sources

Principalement HTML

HTML, URL, Office (Docx, Pptx)

Architecture

Couplage fort au code PHP

Conteneurisé & Scalable

Asynchrone

Complexe à mettre en œuvre

Natif via Webhooks

 

Gotenberg apporte la stabilité et la modularité qui manquaient à l'écosystème PHP. Si votre stack tourne déjà sous Docker, c'est un ajout indispensable.

Retrouvez tous les exemples de code sur mon repo sandbox-gotenberg.