Aller au contenu

Installation de NextPDF Artisan

Installe nextpdf/artisan avec Composer. Composer installe aussi la dépendance d’exécution chrome-php/chrome par transitivité. Rends ensuite un binaire Chrome ou Chromium accessible au processus PHP.

Fenêtre de terminal
composer require nextpdf/artisan

Le package déclare les contraintes suivantes dans composer.json :

ExigenceContrainteNotes
php>=8.4 <9.0PHP 8.4 uniquement
nextpdf/core^3.0 || ^5.2Le moteur open source NextPDF
chrome-php/chrome^1.15Bibliothèque cliente CDP ; installée par transitivité
psr/log^3.0Point d’injection facultatif pour un logger

Composer résout automatiquement chrome-php/chrome. Le binaire Chrome est une dépendance système et n’est jamais installé par Composer.

Le pont a besoin d’un exécutable Chrome ou Chromium. Par défaut, chrome-php/chrome détecte automatiquement un binaire dans les emplacements courants. Pour définir un chemin explicite, passe-le par la configuration : voir /integrations/artisan/configuration/ et la page dédiée /integrations/artisan/chrome-renderer-setup/.

Fenêtre de terminal
# Debian / Ubuntu
apt-get install -y chromium
# RHEL / Fedora
dnf install -y chromium
# macOS (Homebrew)
brew install --cask chromium

Vérifie que le binaire fonctionne en mode headless avant de le câbler dans l’application :

Fenêtre de terminal
chromium --headless --dump-dom about:blank

Une exécution réussie affiche un document DOM vide et se termine avec le code de sortie 0. Un code de sortie non nul signifie que le binaire ou ses bibliothèques partagées sont manquants. Corrige le problème avant de continuer, car le pont fait remonter le même échec sous la forme d’une ChromeRenderException au moment du rendu.

Vérifier que le package est correctement intégré

Section intitulée « Vérifier que le package est correctement intégré »
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
use NextPDF\Artisan\ChromeHtmlRenderer;
require __DIR__ . '/vendor/autoload.php';
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig());
echo $renderer->getHtmlSecurityPolicy()->getName(), PHP_EOL;
// Prints: default

Cela instancie le renderer et récupère la politique de sécurité HTML par défaut sans lancer Chrome. Cela confirme que l’autoloading et les liaisons de contrat nextpdf/core sont correctement résolus. (Comportement vérifié par tests/Unit/Artisan/ChromeHtmlRendererTest.php::usesDefaultHtmlSecurityPolicyWhenNoneInjected.)

Dans Docker, le sandbox Chrome ne peut généralement pas démarrer en tant que PID 1 / root sans capacités du noyau supplémentaires. Le package expose l’option noSandbox pour ce cas. Désactiver le sandbox Chrome a un coût réel pour la sécurité. Les pages /integrations/artisan/security-and-operations/ et /integrations/artisan/chrome-renderer-setup/ documentent ce coût et en énoncent explicitement les limites. N’active pas cette option sans avoir lu cette section.

  • chrome-php/chrome présent mais aucun binaire. Composer réussit ; le premier rendu lève une ChromeRenderException qui enveloppe l’échec de lancement. La vérification de la bibliothèque est distincte de la vérification du binaire.
  • chrome-php/chrome absent. Si la bibliothèque est supprimée de l’autoloader, BrowserPool::getBrowser() lève ChromeNotAvailableException avec la commande de remédiation exacte. (Vérifié par tests/Unit/Artisan/BrowserPoolTest.php::getBrowserThrowsWhenChromePhpPackageIsUnavailable.)
  • Contrainte de version. nextpdf/core: ^3.0 || ^5.2 — Artisan prend en charge les deux branches majeures de core. Fixe la version de core que ton application cible.

Installer le pont introduit un processus externe (Chrome) dans la frontière de confiance. Consulte /integrations/artisan/security-and-operations/ avant d’exposer un chemin de rendu à du HTML fourni par l’utilisateur.

  • /integrations/artisan/overview/
  • /integrations/artisan/configuration/
  • /integrations/artisan/quickstart/
  • /integrations/artisan/chrome-renderer-setup/
  • /integrations/artisan/security-and-operations/