Guides de migration · PHP

Remplacer wkhtmltopdf par pdfkiln dans phpwkhtmltopdf

mikehaertl/phpwkhtmltopdf construit des lignes de commande wkhtmltopdf à partir de tableaux PHP. Elle trouve le programme dans le PATH, ou dans son option binary.

1. Installer pdfkiln

Sur un serveur Linux, prenez le paquet Debian : il apporte les bibliothèques système de Chromium, et ses correctifs 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

Sur un poste de développement, ou là où le paquet Debian ne convient pas, le paquet Composer place wkhtmltopdf et wkhtmltoimage dans vendor/bin ; le programme est téléchargé au premier usage, SHA-256 vérifié :

composer require pdfkiln/pdfkiln

2. Brancher phpwkhtmltopdf sur pdfkiln

use mikehaertl\wkhtmlto\Pdf;
use mikehaertl\wkhtmlto\Image;

$pdf = new Pdf(['binary' => '/usr/bin/wkhtmltopdf']);
$image = new Image(['binary' => '/usr/bin/wkhtmltoimage']);

// With the Composer package
$pdf = new Pdf(['binary' => Pdfkiln\binary()]);

Avec le paquet Debian, /usr/bin/wkhtmltopdf est dans le PATH : l’option devient inutile.

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 phpwkhtmltopdf, et ce que fait pdfkiln

  • Vos options passent telles que vous les écrivez : les 122 options de wkhtmltopdf 0.12.6 sont acceptées, et une option qu’il n’a jamais connue est refusée, comme il la refusait.

Testé

La suite de tests de phpwkhtmltopdf 2.5.0 passe avec pdfkiln à la place de wkhtmltopdf (Ubuntu, job d’intégration continue libraries).

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.