Skip to content

Paquete Artisan

TCPDF-Next Artisan
Artisan · LGPL-3.0

El paquete Artisan (yeeefang/tcpdf-next-artisan) proporciona conversión pixel-perfect de HTML a PDF impulsada por Chrome DevTools Protocol (CDP). Renderiza HTML con soporte completo de CSS3 -- incluyendo Flexbox, Grid, web fonts, media queries y animaciones congeladas al momento del renderizado.

Cuándo usar Artisan

EscenarioRecomendado
Generar PDF desde plantillas HTML/CSSArtisan
Construcción programática de PDF (celdas, dibujo)Core
Emails HTML a archivo PDFArtisan
Factura desde datos estructuradosCore o Artisan
Diseños CSS complejos (Grid, Flexbox)Artisan
PDFs firmados/cifradosCore

Cómo funciona

Artisan lanza una instancia de Chrome headless via Chrome DevTools Protocol, carga tu contenido HTML en una página del navegador y usa la funcionalidad integrada de impresión a PDF de Chrome. Esto significa que cada característica CSS que Chrome soporta está disponible para tus PDFs -- sin más lucha con parsers CSS limitados.

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

Instalación

bash
composer require yeeefang/tcpdf-next-artisan

Requisitos:

  • PHP 8.2+
  • chrome-php/chrome ^1.15 (se instala automáticamente)
  • Navegador Chrome o Chromium instalado en el host
bash
# Ubuntu/Debian
apt-get install -y chromium-browser

# macOS
brew install --cask chromium

# Windows (Chocolatey)
choco install googlechrome

# Set a custom path via environment variable
export CHROME_PATH=/usr/bin/google-chrome

Inicio rápido

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');

Desde una URL

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

Desde un archivo

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

Contenido del paquete

ClasePropósito
HtmlRendererPunto de entrada principal -- cargar HTML, configurar, renderizar
ChromeBridgeComunicación con Chrome DevTools Protocol
RenderOptionsConfiguración de renderizado (márgenes, escala, encabezados)
PageSetupTamaño de página y orientación para renderizado
PdfMergerFusionar múltiples páginas renderizadas en un solo PDF
StyleInjectorInyectar hojas de estilo CSS antes del renderizado
ScreenshotCaptureCapturar capturas de pantalla de la página (PNG/JPEG)

Jerarquía de excepciones

ExcepciónCuándo
RenderExceptionFallo genérico de renderizado
ChromeNotFoundExceptionBinario de Chrome no encontrado en la ruta esperada
TimeoutExceptionLa carga de página o el renderizado excedió el timeout configurado

Todas las excepciones residen bajo el namespace Yeeefang\TcpdfNext\Artisan\Exceptions y extienden una clase base común ArtisanException.

Comparación con el parser HTML de Core

El paquete Core incluye un módulo HtmlParser para conversión básica de HTML a PDF. Úsalo cuando necesites una solución sin dependencias. Usa Artisan cuando necesites fidelidad completa de renderizado del navegador.

CaracterísticaCore HtmlParserArtisan
Dependencia externaNingunaChrome/Chromium
CSS Flexbox / GridNo
Web fonts (@font-face)No
Media queriesNo
Ejecución de JavaScriptNo
Reglas CSS @pageNo
Rendimiento (docs simples)Más rápidoMás lento
Rendimiento (CSS complejo)N/AConfiable

Próximos pasos

Distribuido bajo la licencia LGPL-3.0-or-later.