Skip to content

Migrar do mPDF

Este guia ajuda você a migrar do mPDF (mpdf/mpdf) para o TCPDF-Next. O mPDF é uma biblioteca HTML para PDF com amplo suporte CSS e recursos como texto CJK, códigos de barras e marcas d'água. O TCPDF-Next oferece um superconjunto das capacidades do mPDF com conformidade a padrões modernos e zero dependências de runtime.

Comparação de Recursos

RecursomPDFTCPDF-Next
Versão PHP7.4+8.5+
Versão PDFPDF 1.4 / 1.7PDF 2.0
ArquiteturaCentrada em HTML/CSSPDF-nativa com suporte HTML
Dependências de runtime10+ pacotes ComposerZero
CriptografiaRC4, AES-128, AES-256Apenas AES-256 (PDF 2.0)
Assinaturas digitaisNão suportadoPAdES B-B até B-LTA
PDF/APDF/A-1b, PDF/A-3b (parcial)PDF/A-4 (ISO 19005-4 completo)
PDF com tagsLimitadoAcessibilidade PDF/UA completa
Suporte CJKSim (fontes incluídas 50+ MB)Sim (registre as suas, subsetting otimizado)
RTL / BiDiSimSim (conforme UAX #9)
Códigos de barrasSim (1D e 2D)Sim (vetorial nativo, conjunto expandido)
Marcas d'águaSimSim
Geração de TOCSimSim
Uso de memóriaAlto (DOM completo em memória)Moderado (saída em streaming)

Recursos Específicos do mPDF e Equivalentes no TCPDF-Next

Tags HTML Personalizadas

O mPDF define tags HTML não-padrão. Estas requerem adaptação:

Tag Personalizada mPDFEquivalente TCPDF-Next
<tocpagebreak>$pdf->addTableOfContentsPage()
<tocentry content="..." level="0">$toc->addEntry('...', level: 0)
<barcode code="..." type="C128">$page->addBarcode(BarcodeFactory::code128('...'))
<columnbreak>$renderer->columnBreak()
<pagebreak><div style="page-break-before: always"> (CSS padrão)
<bookmark content="...">$pdf->addBookmark('...')
<watermarktext content="DRAFT">$pdf->setWatermark(Watermark::text('DRAFT'))
<watermarkimage src="...">$pdf->setWatermark(Watermark::image('...'))

Cabeçalhos e Rodapés HTML

mPDF (antes):

php
$mpdf->SetHTMLHeader('<div style="text-align: center;">Header</div>');
$mpdf->SetHTMLFooter('<div>Page {PAGENO} of {nbpg}</div>');
$mpdf->SetHTMLHeader('<div>Even header</div>', 'E');

TCPDF-Next (depois):

php
$pdf->setHtmlHeader('<div style="text-align: center;">Header</div>');
$pdf->setHtmlFooter('<div>Page {{pageNumber}} of {{totalPages}}</div>');
$pdf->setHtmlHeader('<div>Even header</div>', pages: 'even');

Modos WriteHTML

mPDF (antes):

php
$mpdf->WriteHTML($css, \Mpdf\HTMLParserMode::HEADER_CSS);
$mpdf->WriteHTML($body, \Mpdf\HTMLParserMode::HTML_BODY);

TCPDF-Next (depois):

php
$renderer = new HtmlRenderer($pdf);
$renderer->addStylesheet($css);
$renderer->writeHtml($body);

Marcas d'Água

mPDF (antes):

php
$mpdf->SetWatermarkText('DRAFT', 0.1);
$mpdf->showWatermarkText = true;

TCPDF-Next (depois):

php
$pdf->setWatermark(
    Watermark::text('DRAFT')
        ->setOpacity(0.1)
        ->setRotation(45)
        ->setColor(Color::rgb(200, 200, 200))
);

Mapeamento de Configuração

Config mPDFEquivalente TCPDF-Next
mode => 'utf-8'Sempre UTF-8 (sem configuração necessária)
format => 'A4'setPageFormat(PageFormat::A4)
margin_left/right/top/bottomsetMargins(new Margins(...))
default_font$renderer->setDefaultFont(...)
tempDirPdfDocument::create()->setTempDir(...)
autoScriptToLang$renderer->setAutoFontDetection(true)
biDirectionalSempre habilitado (UAX #9)
pdfaAutosetPdfALevel(PdfALevel::PDF_A_4)

Métodos de Saída

mPDF (antes):

php
$mpdf->Output('/path/to/file.pdf', \Mpdf\Output\Destination::FILE);
$mpdf->Output('doc.pdf', \Mpdf\Output\Destination::DOWNLOAD);
$mpdf->Output('doc.pdf', \Mpdf\Output\Destination::INLINE);
$content = $mpdf->Output('', \Mpdf\Output\Destination::STRING_RETURN);

TCPDF-Next (depois):

php
$pdf->save('/path/to/file.pdf');
$bytes = $pdf->toString();

// Web response (Laravel example)
return response($pdf->toString(), 200, [
    'Content-Type' => 'application/pdf',
    'Content-Disposition' => 'attachment; filename="doc.pdf"',
]);

Redução de Dependências

Migrar do mPDF simplifica dramaticamente sua árvore de dependências:

Removidos (mPDF + transitivas):

  • mpdf/mpdf + 10+ pacotes transitivos
  • psr/log, psr/http-message, setasign/fpdi, mpdf/qrcode

Adicionado:

  • yeee-fang/tcpdf-next (zero dependências de runtime)

Comparação de Performance

MétricamPDFTCPDF-NextMelhoria
PDF simples de 1 página45,3 ms8,2 ms5,5x mais rápido
Documento de 100 páginas3.210 ms845 ms3,8x mais rápido
Pico de memória (1 página)18,4 MB4,2 MB4,4x menos
Pico de memória (100 páginas)198,2 MB28,6 MB6,9x menos
Tamanho do arquivo de saída (1 página)24,3 KB12,4 KB2,0x menor

Veja Benchmarks de Performance para metodologia completa e casos de teste.

Leitura Adicional

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