Skip to content

Migrar desde DomPDF

Esta guía te ayuda a migrar de DomPDF (dompdf/dompdf) a TCPDF-Next. Las dos bibliotecas tienen filosofías de diseño fundamentalmente diferentes — DomPDF es un renderizador de HTML/CSS a PDF, mientras que TCPDF-Next es una biblioteca nativa de PDF con un potente motor de renderizado HTML.

Enfoque DomPDF vs enfoque TCPDF-Next

DomPDF trata la generación de PDF como renderizado HTML. Escribes HTML y CSS, y DomPDF lo convierte a PDF. Esto es conveniente pero te limita a lo que CSS puede expresar, sin acceso a funcionalidades nativas de PDF como firmas digitales, cifrado o cumplimiento PDF/A.

TCPDF-Next ofrece dos enfoques:

EnfoqueDescripciónIdeal para
Core APIConstrucción directa de PDF via métodos PHPLayouts de precisión, formularios, gráficos, firmas
Artisan HTML RendererRenderizador HTML/CSS basado en DOM (HtmlRenderer)Contenido con mucho HTML, migración desde DomPDF

Para la mayoría de las migraciones desde DomPDF, usa el Artisan HTML Renderer — acepta tus plantillas HTML existentes con cambios mínimos.

Mapeo de API

DomPDFTCPDF-NextNotas
new Dompdf($options)PdfDocument::create()->build()Builder fluent
$dompdf->loadHtml($html)$renderer->writeHtml($html)El mismo HTML funciona
$dompdf->loadHtmlFile($url)$renderer->writeHtmlFile($path)Solo archivos locales por defecto
$dompdf->setPaper('A4', 'portrait')->setPageFormat(PageFormat::A4)Basado en enum
$dompdf->render()Automático en save() / toString()Sin paso de render explícito
$dompdf->output()$pdf->toString()Retorna string binario
$dompdf->stream('file.pdf')Helpers de respuesta del frameworkVer ejemplos abajo
$options->set('defaultFont', ...)$renderer->setDefaultFont(...)
$options->set('isRemoteEnabled', true)ResourcePolicy::allowDomain(...)Allowlist explícita
$options->set('chroot', $dir)ResourcePolicy::allowLocalDirectory(...)Control más granular

Ejemplo básico de migración

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 (después):

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

Comparación de soporte CSS

Funcionalidad CSSDomPDFTCPDF-Next
Box model (margin, padding, border)
FloatsParcialParcial
FlexboxNoNo
GridNoNo
position: absolute/relativeParcial
@font-face
page-break-before/after
background-imageParcial
border-radiusNo
opacity
Variables CSS (--custom)NoNo
Media queriesNoSolo @media print
Layout tableSí (mejorado)

TIP

El renderizador HTML de TCPDF-Next soporta la mayoría de las propiedades CSS 2.1 y propiedades seleccionadas de CSS 3. Flexbox y Grid no están soportados — usa tablas para layouts complejos. Si encuentras diferencias de renderizado CSS, consulta la documentación del renderizador HTML.

Cuándo usar Core vs Artisan

EscenarioEnfoque recomendado
Migrar plantillas HTML existentesArtisan HTML Renderer
Layouts pixel-perfect (facturas, certificados)Core API
Firmas digitales requeridasCore API (firmar funciona con ambos, pero Core da más control)
Cumplimiento PDF/ACualquiera (ambos soportan PDF/A-4)
Códigos de barras / QRCore API (renderizado vectorial nativo)
Formularios con campos rellenablesCore API
Reportes simples desde HTMLArtisan HTML Renderer

Comparación de rendimiento

MétricaDomPDFTCPDF-NextMejora
PDF simple de 1 página62.1 ms8.2 ms7.6x más rápido
Reporte de 20 páginas891 ms187 ms4.8x más rápido
Memoria pico (1 página)22.1 MB4.2 MB5.3x menos
Memoria pico (20 páginas)89.7 MB12.4 MB7.2x menos
Tamaño de archivo (1 página)31.8 KB12.4 KB2.6x más pequeño

Consulta Benchmarks de rendimiento para la metodología detallada y casos de prueba adicionales.

Nuevas capacidades después de migrar

Funcionalidades disponibles en TCPDF-Next que DomPDF no soporta:

  • Firmas digitales — PAdES B-B hasta B-LTA con soporte de módulos de seguridad hardware.
  • Cifrado AES-256 — Protección de documentos basada en contraseña y certificado.
  • PDF/A-4 — Cumplimiento archivístico completo (ISO 19005-4).
  • Tagged PDF / PDF/UA — Accesibilidad para lectores de pantalla.
  • Códigos de barras nativos — QR, Data Matrix, Code 128, EAN y más como gráficos vectoriales.
  • Campos de formulario — Campos de texto, checkboxes y dropdowns rellenables.
  • Cross-reference streams — Archivos más pequeños con estructura PDF moderna.

Lectura adicional

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