Filosofia de Design
O TCPDF-Next é inspirado pelo TCPDF, mas é uma reescrita completa do zero para a era moderna do PHP. Não é um fork, nem um upgrade incremental -- é uma biblioteca inteiramente nova construída sobre arquitetura de próxima geração.
O TCPDF original serviu bem a comunidade PHP por mais de uma década. Mas sua arquitetura de arquivo único com 30.000 linhas não pode suportar as demandas da geração moderna de PDF: conformidade PDF 2.0, assinaturas digitais PAdES, arquivamento PDF/A-4 ou integração com frameworks como Laravel.
O TCPDF-Next mantém os conceitos que os desenvolvedores PHP conhecem -- addPage(), cell(), setFont() -- enquanto reconstrói tudo por baixo para atender aos padrões de 2026.
Visão Geral
| TCPDF Original | TCPDF-Next | |
|---|---|---|
| Versão PHP | 5.x -- 8.x | 8.5+ apenas |
| Spec PDF | 1.4 -- 1.7 | 2.0 (ISO 32000-2:2020) |
| Arquitetura | Classe única de ~30K linhas | 213 arquivos, 26 módulos, 12 traits composáveis |
| Segurança de tipos | Nenhuma | PHPStan Level 10, backed enums, readonly classes |
| Assinaturas | PKCS#7 básico | PAdES B-B (Core) -> B-LTA (Pro) |
| Arquivamento | PDF/A-1b (parcial) | PDF/A-4 (ISO 19005-4:2020) |
| Renderização HTML | Embutida (CSS limitado) | Embutida + Chrome CDP (CSS3 completo) |
| Testes | ~50 testes | 908+ testes, 28.881+ assertions |
| Extensibilidade | Subclass do monolito | Ecossistema modular + API de extensão |
Arquitetura do Ecossistema
O TCPDF-Next não é um monolito. É um ecossistema modular de quatro pacotes, cada um com uma responsabilidade clara:
Core
Motor PDF 2.0
Chrome CDP
Empresarial
Laravel 12
Symfony 7
CodeIgniter 4
Migração TCPDF
- Core (148 arquivos) -- A engine de PDF. Tudo que você precisa para geração de documentos, tipografia, códigos de barras, criptografia e assinaturas PAdES B-B.
- Artisan (17 arquivos) -- Integração Chrome CDP para renderização HTML/CSS3 pixel-perfect. Saída PDF com texto selecionável via Form XObjects, não imagens rasterizadas.
- Laravel (4 arquivos) -- Integração zero-config com o framework. Facade, respostas HTTP, queue jobs, bindings Octane-safe.
- Pro (47 arquivos) -- Recursos enterprise. PAdES B-T até B-LTA, PDF/A-4, assinatura HSM, códigos de barras especializados.
A API de extensão é aberta: desenvolvedores terceiros podem construir suas próprias extensões que se conectam ao Core através das interfaces publicadas (PdfDocumentInterface, SignerInterface, FontManagerInterface, HsmSignerInterface).
Os 12 Traits Composáveis
A classe Document é o ponto de entrada único. Em vez de uma classe monolítica, sua funcionalidade é composta por 12 traits focados:
| Trait | Responsabilidade |
|---|---|
HasMetadata | Título, autor, assunto, palavras-chave, idioma |
HasPages | Gerenciamento de páginas, tamanhos, margens, grupos de páginas |
HasTypography | Carregamento de fontes, tamanhos, decorações de texto, RTL, BiDi |
HasColors | RGB, CMYK, cores spot, alpha, modos de blend |
HasTextOutput | cell(), multiCell(), text(), write(), writeHtml() |
HasDrawing | Formas, gradientes, padrões, SVG, EPS, imagens |
HasTransforms | Scale, rotate, translate, skew, mirror |
HasLayout | Cabeçalhos, rodapés, colunas, booklet |
HasNavigation | Bookmarks, links, TOC, anotações, anexos de arquivo |
HasInteractive | Campos de formulário, camadas, templates, JavaScript |
HasSecurity | Criptografia, assinaturas digitais, PDF com tags, BiDi, linearização |
HasOutput | output(), save(), getPdfData(), streaming |
Cada método público retorna static para encadeamento fluente:
$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'); // HasOutputPróximos Passos
- Arquitetura em Profundidade -- Mapa de namespaces, fronteiras de módulos, inicialização lazy
- Construindo Extensões -- Como construir extensões de terceiros
- Por que PHP 8.5+? -- A escolha deliberada e orientação Docker