Skip to content

Pacote Artisan

TCPDF-Next Artisan
Artisan · LGPL-3.0

O pacote Artisan (yeeefang/tcpdf-next-artisan) fornece conversão pixel-perfect de HTML para PDF alimentada pelo Chrome DevTools Protocol (CDP). Ele renderiza HTML com suporte completo a CSS3 -- incluindo Flexbox, Grid, web fonts, media queries e animações congeladas no momento da renderização.

Quando Usar o Artisan

CenárioRecomendado
Gerar PDF a partir de templates HTML/CSSArtisan
Construção programática de PDF (cells, desenho)Core
Emails HTML para arquivo PDFArtisan
Fatura a partir de dados estruturadosCore ou Artisan
Layouts CSS complexos (Grid, Flexbox)Artisan
PDFs assinados/criptografadosCore

Como Funciona

O Artisan inicia uma instância headless do Chrome via Chrome DevTools Protocol, carrega seu conteúdo HTML em uma página do navegador e usa a funcionalidade nativa de impressão para PDF do Chrome. Isso significa que todo recurso CSS que o Chrome suporta está disponível para seus PDFs -- sem mais lutas com parsers CSS limitados.

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

Instalação

bash
composer require yeeefang/tcpdf-next-artisan

Requisitos:

  • PHP 8.2+
  • chrome-php/chrome ^1.15 (instalado automaticamente)
  • Navegador Chrome ou Chromium instalado no 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

Início 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');

A Partir de uma URL

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

A Partir de um Arquivo

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

Conteúdo do Pacote

ClasseFinalidade
HtmlRendererPonto de entrada principal -- carregar HTML, configurar, renderizar
ChromeBridgeComunicação via Chrome DevTools Protocol
RenderOptionsConfiguração de renderização (margens, escala, cabeçalhos)
PageSetupTamanho de página e orientação para renderização
PdfMergerMesclar múltiplas páginas renderizadas em um único PDF
StyleInjectorInjetar folhas de estilo CSS antes da renderização
ScreenshotCaptureCapturar screenshots da página (PNG/JPEG)

Hierarquia de Exceções

ExceçãoQuando
RenderExceptionFalha genérica de renderização
ChromeNotFoundExceptionBinário do Chrome não encontrado no caminho esperado
TimeoutExceptionCarregamento da página ou renderização excedeu o timeout configurado

Todas as exceções residem no namespace Yeeefang\TcpdfNext\Artisan\Exceptions e estendem uma classe base comum ArtisanException.

Comparação com o HTML Parser do Core

O pacote Core inclui um módulo HtmlParser para conversão básica de HTML para PDF. Use-o quando precisar de uma solução sem dependências. Use o Artisan quando precisar de fidelidade total de renderização do navegador.

RecursoCore HtmlParserArtisan
Dependência externaNenhumaChrome/Chromium
CSS Flexbox / GridNãoSim
Web fonts (@font-face)NãoSim
Media queriesNãoSim
Execução de JavaScriptNãoSim
Regras CSS @pageNãoSim
Performance (docs simples)Mais rápidoMais lento
Performance (CSS complexo)N/AConfiável

Próximos Passos

Distribuído sob a licença LGPL-3.0-or-later.