Guides de migration · Python

Remplacer wkhtmltopdf par pdfkiln dans imgkit

imgkit fait des captures de pages avec wkhtmltoimage, que pdfkiln fournit à côté de wkhtmltopdf, avec les mêmes 63 options.

1. Installer pdfkiln

Sous Debian et Ubuntu, amd64 et arm64 : le dépôt APT signé installe /usr/bin/wkhtmltopdf, à la place du paquet wkhtmltox, et apporte les correctifs de Chromium avec apt upgrade.

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

Ailleurs : l’image Docker, les archives et le programme d’installation pour Windows.

2. Brancher imgkit sur pdfkiln

import imgkit

# Nothing to do if wkhtmltoimage is in the PATH
imgkit.from_url('https://example.com', 'out.png')

# Otherwise, give its path
config = imgkit.config(wkhtmltoimage='/usr/bin/wkhtmltoimage')
imgkit.from_string(html, 'out.jpg', config=config)

3. Vérifier

wkhtmltopdf --version
# wkhtmltopdf 0.12.6 (with patched qt), pdfkiln 1.0.3, Chromium 156.0.8078.73

La réponse commence comme celle de wkhtmltopdf 0.12.6 : les bibliothèques qui lisent la version continuent de fonctionner.

Ce qu’attend imgkit, et ce que fait pdfkiln

  • Formats : jpg (par défaut sur la sortie standard), png, bmp, ppm, xpm, xbm et svg, d’après --format ou l’extension ; le SVG embarque un PNG. tif, gif et webp donnent Could not save image, comme avec wkhtmltoimage.
  • Largeur : celle de l’écran, 1024 pixels par défaut, élargie tant que le contenu déborde (smart width). Hauteur : celle du contenu.
  • Sous une page dont le corps masque son débordement (les rapports Odoo, par exemple), wkhtmltoimage ajoutait des milliers de pixels blancs ; pdfkiln s’arrête au contenu.

Testé

La suite d’imgkit 1.2.3 passe 43 tests sur 43 sur wkhtmltoimage, comme avec wkhtmltoimage 0.12.6 (sans ses tests de xvfb et de github.com, que le conteneur de test ne peut pas joindre).

Un rendu diffère ? Ouvrez un ticket avec le HTML et les deux PDF : github.com/Jamalofski/pdfkiln/issues. Les différences connues sont listées dans le README.