nas-runbooks/common/gotenberg-pdf.md

1.5 KiB

GOTENBERG-PDF — HTML → PDF (piège police web)

Note partagée aux 3 instances Hermes. Source : projet gsparc-mezzouna, 2026-06-14.

Gotenberg convertit du HTML en PDF. Conteneur gotenberg sur le réseau n8n, port 3000. POST http://gotenberg:3000/forms/chromium/convert/html (champ files = index.html).

PIÈGE — police web manquante sur pages lourdes

Sur une page lourde (grosse image base64 en ligne), Chromium imprime avant que la police web (@import Google Fonts) soit appliquée → texte manquant ou rendu incohérent d'un document à l'autre. C'est déterministe selon le poids : les pages légères passent, les lourdes échouent (piège : on croit à un aléa).

SOLUTION

  • Champ form waitDelay: "1.5s" → laisse charger les ressources async (police) avant impression.
  • Alléger la page : redimensionner les images embarquées.
  • Pile de polices de secours avec une Arabe quasi toujours présente dans Chromium : font-family: Cairo,"Noto Sans Arabic","Noto Naskh Arabic",Tahoma,Arial,sans-serif;

Exemple (paysage A4 pleine page)

curl -s http://gotenberg:3000/forms/chromium/convert/html \
  -F "files=@index.html" \
  -F "paperWidth=11.69" -F "paperHeight=8.27" \
  -F "marginTop=0.2" -F "marginBottom=0.2" -F "marginLeft=0.2" -F "marginRight=0.2" \
  -F "landscape=true" -F "printBackground=true" -F "waitDelay=1.5s" -o out.pdf

Implémentation de référence : gsparc-mezzouna/app/routes/export.py (_fiche_pdf_bytes).