wkhtmltopdf aujourd’hui · Comparer

wkhtmltopdf pour Odoo 20

Odoo 16 à 20 impriment leurs rapports avec wkhtmltopdf, et Odoo 20 tourne sous Ubuntu 24.04, Debian 13 et Ubuntu 26.04. Nous avons installé Odoo 20 sur chacun et imprimé six de ses documents standard avec chaque moteur qui s’y installe.

Ce qui s’imprime, et où

Un devis, une facture, une facture de 36 lignes sur trois pages, deux factures dans un seul PDF, un bon de livraison et une commande fournisseur, tirés des données de démonstration d’Odoo dans sa mise en page par défaut, imprimés par la route d’Odoo, comme le fait son bouton Imprimer.

MoteurUbuntu 24.04Debian 13Debian 13 ARM64Ubuntu 26.04
Le paquet wkhtmltopdf d’UbuntuNi en-tête ni pied de page, texte dessiné en tracés ; Odoo refuse deux factures dans un seul PDF sans Qt patchéAucun paquetAucun paquetAucun paquet
wkhtmltopdf 0.12.6, paquet officiel de mai 20236 sur 66 sur 66 sur 66 sur 6
Paper Muncher, le moteur d’Odoo6 sur 66 sur 6Aucun paquet6 sur 6
PDFKiln6 sur 66 sur 66 sur 66 sur 6

6 sur 6 : chaque document imprimé, avec son en-tête et son pied de page sur chaque page. PDFKiln a aussi été mesuré avec Odoo en mode multiprocessus (--workers 2), comme en production : 6 sur 6 sur chaque système.

À quoi ressemblent les pages

Le devis imprimé par wkhtmltopdf 0.12.6 : logo et adresse de la société en haut, numéro de page en bas
wkhtmltopdf 0.12.6
Le même devis imprimé par Paper Muncher : le corps commence plus haut, le pied de page est plus bas, l’icône du téléphone manque
Paper Muncher
Le même devis imprimé par PDFKiln, mis en page comme par wkhtmltopdf 0.12.6
PDFKiln

Le devis sous Debian 13. PDFKiln garde la mise en page de wkhtmltopdf. Paper Muncher remonte le corps, descend le pied de page et omet l’icône du téléphone, un glyphe d’une police d’icônes.

Page 2 de la facture de 36 lignes imprimée par le paquet wkhtmltopdf d’Ubuntu : ni logo, ni titres de colonnes, ni numéro de page
wkhtmltopdf d’Ubuntu
Page 2 de la même facture imprimée par PDFKiln : logo et adresse, titres de colonnes, Page 2 / 3
PDFKiln

Page 2 de la facture de 36 lignes sous Ubuntu 24.04. Le paquet d’Ubuntu, construit sans le Qt patché de wkhtmltopdf, n’imprime ni l’en-tête, ni les titres de colonnes, ni le numéro de page, et dessine le texte en tracés : on ne peut ni le sélectionner ni le chercher. PDFKiln imprime les trois, comme wkhtmltopdf 0.12.6.

Combien de temps prend une impression

Médiane des six documents, de la demande d’Odoo au PDF, avec le serveur par défaut d’Odoo :

Systèmewkhtmltopdf 0.12.6Paper MuncherPDFKiln
Ubuntu 24.042,31 s1,11 s1,20 s
Debian 132,25 s0,85 s0,98 s
Debian 13 ARM642,29 sAucun paquet1,04 s
Ubuntu 26.042,20 s0,70 s0,88 s

Odoo demande 1 000 ms de JavaScript avant d’imprimer : wkhtmltopdf attend toujours tout ce délai, PDFKiln s’arrête dès que plus rien ne peut changer la page. Paper Muncher va plus vite encore. Une mesure par système, sur les machines virtuelles de GitHub.

Paper Muncher

Odoo 20 livre son propre moteur, Paper Muncher, dans le module base_report_paper_muncher. wkhtmltopdf reste le moteur par défaut : Paper Muncher se choisit rapport par rapport en mode développeur, ou pour tous avec le paramètre système report.pdf_engine_default. Son README le dit en alpha précoce, et ses paquets ne sont que pour amd64.

Le paquet de 2023 s’installe encore

Les derniers paquets officiels de wkhtmltopdf, 0.12.6.1-3 du 22 mai 2023, ont été construits pour Debian 12 et Ubuntu 22.04. Celui de Debian 12 s’installe encore sous Debian 13, celui d’Ubuntu 22.04 sous Ubuntu 24.04 et 26.04, et ils impriment ces documents. Ils ne reçoivent plus aucun correctif : le dépôt de paquets est archivé, et la CVE-2022-35583 reste ouverte. PDFKiln apporte les correctifs de Chromium avec apt upgrade.

Passer à PDFKiln

Le dépôt APT signé installe /usr/bin/wkhtmltopdf à la place du paquet wkhtmltox :

curl -fsS https://apt.pdfkiln.org/pdfkiln-archive-keyring.asc | sudo tee /usr/share/keyrings/pdfkiln-archive-keyring.asc > /dev/null
printf 'Types: deb\nURIs: https://apt.pdfkiln.org\nSuites: stable\nComponents: main\nSigned-By: /usr/share/keyrings/pdfkiln-archive-keyring.asc\n' \
  | sudo tee /etc/apt/sources.list.d/pdfkiln.sources
sudo apt update && sudo apt install pdfkiln

Redémarrez Odoo : il cherche wkhtmltopdf au démarrage. Rien à configurer. Dans un conteneur, la sandbox de Chromium demande le profil seccomp de la page Docker.

Comment c’est mesuré

Job d’intégration continue odoo de PDFKiln, 1er novembre 2026, avec les scripts de test/odoo : Odoo 20.0 depuis git, avec le Python et le PostgreSQL de chaque système, dans des conteneurs ubuntu:24.04, debian:trixie et ubuntu:26.04. Une page a son en-tête quand le nom de la société est dans sa bande du haut, son pied de page quand le numéro de page est dans sa bande du bas.

Ensuite

Le guide Odoo dit ce qu’Odoo attend de wkhtmltopdf et comment PDFKiln y répond.