Skip to content

Package Artisan

TCPDF-Next Artisan
Artisan · LGPL-3.0

Le package Artisan (yeeefang/tcpdf-next-artisan) fournit une conversion HTML-to-PDF au pixel près propulsée par Chrome DevTools Protocol (CDP). Il rend le HTML avec un support CSS3 complet -- incluant Flexbox, Grid, web fonts, media queries et animations figées au moment du rendu.

Quand utiliser Artisan

ScénarioRecommandé
Générer un PDF depuis des templates HTML/CSSArtisan
Construction programmatique de PDF (cellules, dessin)Core
Emails HTML vers archive PDFArtisan
Facture depuis données structuréesCore ou Artisan
Mises en page CSS complexes (Grid, Flexbox)Artisan
PDF signés/chiffrésCore

Comment ça fonctionne

Artisan lance une instance Chrome headless via le Chrome DevTools Protocol, charge votre contenu HTML dans une page de navigateur et utilise la fonctionnalité print-to-PDF intégrée de Chrome. Cela signifie que chaque fonctionnalité CSS que Chrome supporte est disponible pour vos PDF -- plus besoin de lutter avec des parseurs CSS limités.

HTML/CSS --> ChromeBridge --> Chrome CDP --> binaire PDF --> save / stream

Installation

bash
composer require yeeefang/tcpdf-next-artisan

Prérequis :

  • PHP 8.2+
  • chrome-php/chrome ^1.15 (installé automatiquement)
  • Navigateur Chrome ou Chromium installé sur l'hôte
bash
# Ubuntu/Debian
apt-get install -y chromium-browser

# macOS
brew install --cask chromium

# Windows (Chocolatey)
choco install googlechrome

# Définir un chemin personnalisé via variable d'environnement
export CHROME_PATH=/usr/bin/google-chrome

Démarrage rapide

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();

$renderer
    ->loadHtml('<h1>Hello, World!</h1><p>Rendered with Chrome CDP.</p>')
    ->save('/output/hello.pdf');

Depuis une URL

php
HtmlRenderer::create()
    ->loadUrl('https://example.com/report')
    ->save('/output/report.pdf');

Depuis un fichier

php
HtmlRenderer::create()
    ->loadFile('/templates/invoice.html')
    ->save('/output/invoice.pdf');

Contenu du package

ClasseObjectif
HtmlRendererPoint d'entrée principal -- charger HTML, configurer, rendre
ChromeBridgeCommunication Chrome DevTools Protocol
RenderOptionsConfiguration de rendu (marges, échelle, en-têtes)
PageSetupTaille de page et orientation pour le rendu
PdfMergerFusionner plusieurs pages rendues en un seul PDF
StyleInjectorInjecter des feuilles de style CSS avant le rendu
ScreenshotCaptureCapturer des captures d'écran de page (PNG/JPEG)

Hiérarchie d'exceptions

ExceptionQuand
RenderExceptionÉchec de rendu générique
ChromeNotFoundExceptionBinaire Chrome non trouvé au chemin attendu
TimeoutExceptionChargement de page ou rendu a dépassé le timeout configuré

Toutes les exceptions vivent sous le namespace Yeeefang\TcpdfNext\Artisan\Exceptions et étendent une classe de base commune ArtisanException.

Comparaison avec le parseur HTML Core

Le package Core inclut un module HtmlParser pour conversion HTML-to-PDF basique. Utilisez-le quand vous avez besoin d'une solution sans dépendance. Utilisez Artisan quand vous avez besoin d'une fidélité de rendu navigateur complète.

FonctionnalitéCore HtmlParserArtisan
Dépendance externeAucuneChrome/Chromium
CSS Flexbox / GridNonOui
Web fonts (@font-face)NonOui
Media queriesNonOui
Exécution JavaScriptNonOui
Règles CSS @pageNonOui
Performance (docs simples)Plus rapidePlus lent
Performance (CSS complexe)N/AFiable

Prochaines étapes

Distribué sous licence LGPL-3.0-or-later.