Skip to content

Migrar do DomPDF

Este guia ajuda você a migrar do DomPDF (dompdf/dompdf) para o TCPDF-Next. As duas bibliotecas têm filosofias de design fundamentalmente diferentes -- o DomPDF é um renderizador de HTML/CSS para PDF, enquanto o TCPDF-Next é uma biblioteca PDF-nativa com uma poderosa engine de renderização HTML.

Abordagem DomPDF vs Abordagem TCPDF-Next

O DomPDF trata a geração de PDF como renderização HTML. Você escreve HTML e CSS, e o DomPDF converte em um PDF. Isso é conveniente, mas limita você ao que o CSS pode expressar, sem acesso a recursos nativos do PDF como assinaturas digitais, criptografia ou conformidade PDF/A.

O TCPDF-Next oferece duas abordagens:

AbordagemDescriçãoMelhor Para
API CoreConstrução direta de PDF via métodos PHPLayouts precisos, formulários, gráficos, assinaturas
Artisan HTML RendererRenderizador HTML/CSS baseado em DOM (HtmlRenderer)Conteúdo pesado em HTML, migração do DomPDF

Para a maioria das migrações do DomPDF, use o Artisan HTML Renderer -- ele aceita seus templates HTML existentes com alterações mínimas.

Mapeamento de API

DomPDFTCPDF-NextNotas
new Dompdf($options)PdfDocument::create()->build()Builder fluente
$dompdf->loadHtml($html)$renderer->writeHtml($html)O mesmo HTML funciona
$dompdf->loadHtmlFile($url)$renderer->writeHtmlFile($path)Apenas arquivos locais por padrão
$dompdf->setPaper('A4', 'portrait')->setPageFormat(PageFormat::A4)Baseado em enum
$dompdf->render()Automático no save() / toString()Sem passo explícito de render
$dompdf->output()$pdf->toString()Retorna string binária
$dompdf->stream('file.pdf')Helpers de resposta do frameworkVeja exemplos abaixo
$options->set('defaultFont', ...)$renderer->setDefaultFont(...)
$options->set('isRemoteEnabled', true)ResourcePolicy::allowDomain(...)Lista de permissão explícita
$options->set('chroot', $dir)ResourcePolicy::allowLocalDirectory(...)Controle mais granular

Exemplo Básico de Migração

DomPDF (antes):

php
use Dompdf\Dompdf;
use Dompdf\Options;

$options = new Options();
$options->set('defaultFont', 'Helvetica');
$options->set('isRemoteEnabled', true);

$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
file_put_contents('output.pdf', $dompdf->output());

TCPDF-Next (depois):

php
use YeeeFang\TcpdfNext\Document\PdfDocument;
use YeeeFang\TcpdfNext\Document\PageFormat;
use YeeeFang\TcpdfNext\Html\HtmlRenderer;

$pdf = PdfDocument::create()
    ->setPageFormat(PageFormat::A4)
    ->build();

$renderer = new HtmlRenderer($pdf);
$renderer->setDefaultFont('Helvetica', size: 12);
$renderer->writeHtml($html);

$pdf->save('output.pdf');

Comparação de Suporte CSS

Recurso CSSDomPDFTCPDF-Next
Box model (margin, padding, border)SimSim
FloatsParcialParcial
FlexboxNãoNão
GridNãoNão
position: absolute/relativeParcialSim
@font-faceSimSim
page-break-before/afterSimSim
background-imageParcialSim
border-radiusNãoSim
opacitySimSim
Variáveis CSS (--custom)NãoNão
Media queriesNãoApenas @media print
Layout tableSimSim (melhorado)

TIP

O renderizador HTML do TCPDF-Next suporta a maioria das propriedades CSS 2.1 e propriedades CSS 3 selecionadas. Flexbox e Grid não são suportados -- use tabelas para layouts complexos. Se encontrar diferenças de renderização CSS, consulte a documentação do HTML Renderer.

Quando Usar Core vs Artisan

CenárioAbordagem Recomendada
Migrar templates HTML existentesArtisan HTML Renderer
Layouts pixel-perfect (faturas, certificados)API Core
Assinaturas digitais necessáriasAPI Core (assinatura funciona com ambos, mas Core dá mais controle)
Conformidade PDF/AAmbos (ambos suportam PDF/A-4)
Códigos de barras / QR codesAPI Core (renderização vetorial nativa)
Formulários com campos preenchíveisAPI Core
Relatórios simples a partir de HTMLArtisan HTML Renderer

Comparação de Performance

MétricaDomPDFTCPDF-NextMelhoria
PDF simples de 1 página62,1 ms8,2 ms7,6x mais rápido
Relatório de 20 páginas891 ms187 ms4,8x mais rápido
Pico de memória (1 página)22,1 MB4,2 MB5,3x menos
Pico de memória (20 páginas)89,7 MB12,4 MB7,2x menos
Tamanho do arquivo de saída (1 página)31,8 KB12,4 KB2,6x menor

Veja Benchmarks de Performance para metodologia detalhada e casos de teste adicionais.

Novos Recursos Após a Migração

Recursos disponíveis no TCPDF-Next que o DomPDF não suporta:

  • Assinaturas digitais -- PAdES B-B até B-LTA com suporte a módulo de segurança de hardware.
  • Criptografia AES-256 -- Proteção de documento baseada em senha e certificado.
  • PDF/A-4 -- Conformidade total de arquivamento (ISO 19005-4).
  • PDF com tags / PDF/UA -- Acessibilidade para leitores de tela.
  • Códigos de barras nativos -- QR, Data Matrix, Code 128, EAN e mais como gráficos vetoriais.
  • Campos de formulário -- Campos de texto preenchíveis, checkboxes, dropdowns.
  • Cross-reference streams -- Tamanhos de arquivo menores com estrutura PDF moderna.

Leitura Adicional

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