Skip to content

Filosofía de diseño

TCPDF-Next está inspirado por TCPDF pero es una reescritura completa desde cero para la era moderna de PHP. No es un fork, no es una actualización incremental — es una biblioteca completamente nueva construida sobre arquitectura de próxima generación.

El TCPDF original sirvió bien a la comunidad PHP durante más de una década. Pero su arquitectura de un solo archivo de 30,000 líneas no puede soportar las demandas de la generación moderna de PDF: cumplimiento PDF 2.0, firmas digitales PAdES, archivado PDF/A-4 o integración con frameworks como Laravel.

TCPDF-Next mantiene los conceptos que los desarrolladores PHP conocen — addPage(), cell(), setFont() — mientras reconstruye todo lo subyacente para cumplir los estándares de 2026.

De un vistazo

TCPDF OriginalTCPDF-Next
Versión PHP5.x – 8.xSolo 8.5+
Especificación PDF1.4 – 1.72.0 (ISO 32000-2:2020)
ArquitecturaClase única de ~30K líneas213 archivos, 26 módulos, 12 traits componibles
Seguridad de tiposNingunaPHPStan Level 10, backed enums, clases readonly
FirmasPKCS#7 básicoPAdES B-B (Core) a B-LTA (Pro)
ArchivadoPDF/A-1b (parcial)PDF/A-4 (ISO 19005-4:2020)
Renderizado HTMLIntegrado (CSS limitado)Integrado + Chrome CDP (CSS3 completo)
Testing~50 tests908+ tests, 28,881+ aserciones
ExtensibilidadSubclasear monolitoEcosistema modular + API de extensiones

Arquitectura del ecosistema

TCPDF-Next no es un monolito. Es un ecosistema modular de cuatro paquetes, cada uno con una responsabilidad clara:

Core TCPDF-Next
Core
Funcional
Core Core
Motor PDF 2.0
Artisan Artisan
Chrome CDP
Pro Pro
Empresarial
Integración de framework
Laravel Laravel
Laravel 12
Symfony Symfony
Symfony 7
CodeIgniter CodeIgniter
CodeIgniter 4
Compatibilidad
Adaptation Adaptation
Migración TCPDF
  • Core (148 archivos) — El motor PDF. Todo lo que necesitas para generación de documentos, tipografía, códigos de barras, cifrado y firmas PAdES B-B.
  • Artisan (17 archivos) — Integración Chrome CDP para renderizado HTML/CSS3 pixel-perfect. Salida PDF con texto seleccionable via Form XObjects, no imágenes rasterizadas.
  • Laravel (4 archivos) — Integración de framework sin configuración. Facade, respuestas HTTP, queue jobs, bindings seguros para Octane.
  • Pro (47 archivos) — Funcionalidades profesionales. PAdES B-T hasta B-LTA, PDF/A-4, firma HSM, códigos de barras especializados.

La API de extensiones es abierta: los desarrolladores de terceros pueden construir sus propias extensiones que se conectan a Core a través de las interfaces publicadas (PdfDocumentInterface, SignerInterface, FontManagerInterface, HsmSignerInterface).

Los 12 traits componibles

La clase Document es el punto de entrada único. En lugar de una clase monolítica, su funcionalidad se compone de 12 traits enfocados:

TraitResponsabilidad
HasMetadataTítulo, autor, tema, keywords, idioma
HasPagesGestión de páginas, tamaños, márgenes, grupos de páginas
HasTypographyCarga de fuentes, tamaños, decoraciones de texto, RTL, BiDi
HasColorsRGB, CMYK, colores spot, alpha, modos de mezcla
HasTextOutputcell(), multiCell(), text(), write(), writeHtml()
HasDrawingFormas, gradientes, patrones, SVG, EPS, imágenes
HasTransformsEscalar, rotar, trasladar, sesgar, reflejar
HasLayoutHeaders, footers, columnas, folleto
HasNavigationMarcadores, enlaces, TOC, anotaciones, archivos adjuntos
HasInteractiveCampos de formulario, capas, plantillas, JavaScript
HasSecurityCifrado, firmas digitales, tagged PDF, BiDi, linearización
HasOutputoutput(), save(), getPdfData(), streaming

Cada método público retorna static para encadenamiento fluent:

php
$pdf = Document::create()
    ->setTitle('Invoice')       // HasMetadata
    ->addPage()                 // HasPages
    ->setFont('Helvetica', '', 12) // HasTypography
    ->setFillColor(240, 240, 240)  // HasColors
    ->cell(0, 10, 'Hello')     // HasTextOutput
    ->save('invoice.pdf');      // HasOutput

Qué sigue

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