Skip to content

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 OriginalTCPDF-Next
Versão PHP5.x -- 8.x8.5+ apenas
Spec PDF1.4 -- 1.72.0 (ISO 32000-2:2020)
ArquiteturaClasse única de ~30K linhas213 arquivos, 26 módulos, 12 traits composáveis
Segurança de tiposNenhumaPHPStan Level 10, backed enums, readonly classes
AssinaturasPKCS#7 básicoPAdES B-B (Core) -> B-LTA (Pro)
ArquivamentoPDF/A-1b (parcial)PDF/A-4 (ISO 19005-4:2020)
Renderização HTMLEmbutida (CSS limitado)Embutida + Chrome CDP (CSS3 completo)
Testes~50 testes908+ testes, 28.881+ assertions
ExtensibilidadeSubclass do monolitoEcossistema 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 TCPDF-Next
Core
Funcional
Core Core
Motor PDF 2.0
Artisan Artisan
Chrome CDP
Pro Pro
Empresarial
Integração com framework
Laravel Laravel
Laravel 12
Symfony Symfony
Symfony 7
CodeIgniter CodeIgniter
CodeIgniter 4
Compatibilidade
Adaptation Adaptation
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 profissionais. 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:

TraitResponsabilidade
HasMetadataTítulo, autor, assunto, palavras-chave, idioma
HasPagesGerenciamento de páginas, tamanhos, margens, grupos de páginas
HasTypographyCarregamento de fontes, tamanhos, decorações de texto, RTL, BiDi
HasColorsRGB, CMYK, cores spot, alpha, modos de blend
HasTextOutputcell(), multiCell(), text(), write(), writeHtml()
HasDrawingFormas, gradientes, padrões, SVG, EPS, imagens
HasTransformsScale, rotate, translate, skew, mirror
HasLayoutCabeçalhos, rodapés, colunas, booklet
HasNavigationBookmarks, links, TOC, anotações, anexos de arquivo
HasInteractiveCampos de formulário, camadas, templates, JavaScript
HasSecurityCriptografia, assinaturas digitais, PDF com tags, BiDi, linearização
HasOutputoutput(), save(), getPdfData(), streaming

Cada método público retorna static para encadeamento fluente:

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

Próximos Passos

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