Gotenberg est un excellent outil pour générer des PDFs à partir de HTML/CSS. Avec DDEV, l’extension ddev-gotenberg permet de l’intégrer facilement à son environnement de développement. Mais dès qu’on veut utiliser des fonts personnalisées, ça se complique : Gotenberg ne connaît que les fonts système installées dans son container.
J’ai rencontré ce problème sur un projet e-commerce où les PDFs (factures, bons de livraison) devaient respecter la charte graphique du client avec une font spécifique. Voici comment j’ai résolu ça proprement.
Le problème
Par défaut, Gotenberg utilise une image Docker avec un ensemble limité de fonts. Si votre CSS référence une font qui n’est pas installée dans le container, elle sera simplement ignorée et remplacée par une font de fallback.
La solution : créer une image Docker personnalisée
L’idée est de créer une image Docker basée sur Gotenberg, dans laquelle on ajoute nos fonts.
1. Créer le Dockerfile
Dans votre projet, créez un fichier gotenberg.Dockerfile :
FROM gotenberg/gotenberg:8
USER root
COPY ./fonts/ /usr/local/share/fonts/
RUN fc-cache -f -v
USER gotenberg
Le fc-cache -f -v force la reconstruction du cache des fonts, ce qui évite des problèmes de détection.
2. Préparer les fonts
Créez un dossier fonts/ au même niveau que votre Dockerfile et placez-y vos fichiers .ttf ou .otf.
3. Builder l’image
docker build -t gotenberg_custom -f gotenberg.Dockerfile .
4. Configurer DDEV pour utiliser cette image
Plutôt que de modifier le fichier docker-compose généré par l’addon (qui serait écrasé au prochain ddev restart), utilisez une variable d’environnement :
ddev dotenv set .ddev/.env.gotenberg --gotenberg-docker-image=gotenberg_custom
Cette commande crée un fichier .ddev/.env.gotenberg avec le contenu :
GOTENBERG_DOCKER_IMAGE="gotenberg_custom"
5. Redémarrer DDEV
ddev restart
La font est maintenant disponible et peut être utilisée directement dans vos feuilles de style CSS :
body {
font-family: 'MaFontCustom', sans-serif;
}
Conclusion
Cette approche permet de garder une configuration propre et maintenable. L’image custom peut être versionnée et partagée avec l’équipe, et la configuration DDEV reste intacte lors des mises à jour de l’addon.
Si vous avez d’autres astuces sur Gotenberg ou DDEV, n’hésitez pas à les partager en commentaire.
Laisser un commentaire