Skip to content

Perguntas Frequentes

Por que o TCPDF-Next exige PHP 8.5+?

O PHP 8.5 introduz funcionalidades da linguagem que são fundamentais para a arquitetura da biblioteca — incluindo suporte ao operador pipe, inferência de tipos aprimorada e semântica readonly melhorada. Mirar em um runtime moderno permite que o TCPDF-Next seja menor, mais rápido e mais seguro por design, não por contorno.

Para uma justificativa mais aprofundada, veja Por que PHP 8.5?.

O TCPDF-Next é um fork do TCPDF?

Não. O TCPDF-Next é uma reescrita completa do zero. Ele não compartilha código com a biblioteca TCPDF original. A parte "TCPDF" do nome reconhece o domínio do problema (geração de PDF em PHP) e a influência do projeto legado na comunidade, mas a arquitetura, superfície da API e implementação são inteiramente novos.

Posso usá-lo sem Laravel?

Sim. O pacote tcpdf-next/core é totalmente agnóstico de framework. Ele depende apenas do PHP 8.5+ e não possui dependências de framework. Você pode usá-lo em qualquer aplicação PHP — Symfony, Slim, scripts PHP puros, ferramentas CLI ou workers de fila.

O pacote opcional tcpdf-next/laravel adiciona conveniências específicas do Laravel (service provider, Facade, publicação de configuração) mas não é obrigatório.

Qual é a diferença entre Core e Pro?

CorePro
LicençaMITComercial
Geração de PDFCompletaCompleta
Tipografia avançadaBásicaModelagem OpenType, BiDi, ligaturas
Assinaturas digitaisNão incluídaPAdES / CAdES / X.509
PDF/A, PDF/XNão incluídoModos de conformidade completos
Motor de códigos de barrasCódigos 1D1D + 2D (QR, DataMatrix, PDF417)
SuporteComunidade (GitHub Issues)E-mail prioritário + SLA

O Core é pronto para produção por si só. O Pro o estende com funcionalidades empresariais e de conformidade.

Como gerar HTML-para-PDF com suporte completo a CSS3?

Use o pacote Artisan (tcpdf-next/artisan). Ele fornece um pipeline de renderização que aceita entrada HTML + CSS3 e produz saída PDF com precisão de pixel, alimentado pelo TCPDF-Next Core internamente.

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();
$renderer->loadHtml('<h1>Hello</h1><p style="color: navy;">Styled paragraph.</p>');
$renderer->save('/output/report.pdf');

O Artisan suporta Flexbox, Grid, web fonts, media queries e a maior parte da especificação CSS3.

O TCPDF-Next suporta CJK (Chinês, Japonês, Coreano)?

Sim. O TCPDF-Next possui suporte de primeira classe para scripts CJK e layouts de texto complexos:

  • CjkFontValidator — valida e cria subconjuntos de arquivos de fontes CJK, garantindo cobertura correta de glifos.
  • BiDiResolver — trata texto bidirecional (ex.: inglês misturado com árabe/hebraico).
  • ArabicShaper — aplica regras de modelagem contextual para árabe, farsi e urdu.

Incorpore qualquer fonte TrueType/OpenType com suporte a CJK via configuração de fontes, e a renderização de texto funciona automaticamente.

php
$doc->configureFonts(function (FontConfig $config): void {
    $config->addFont('/fonts/NotoSansCJK-Regular.ttc', alias: 'NotoSansCJK');
});

$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界');        // Chinês
$doc->cell(text: 'こんにちは世界');   // Japonês
$doc->cell(text: '안녕하세요 세계');   // Coreano

O TCPDF-Next está pronto para produção?

Sim. A biblioteca é respaldada por um rigoroso pipeline de testes e análise:

  • 908+ testes cobrindo cenários unitários, de integração e de regressão visual.
  • 28.881+ asserções em toda a suíte de testes.
  • PHPStan Level 10 — o nível mais rigoroso de análise estática — passa com zero erros.
  • 100% declare(strict_types=1) em todos os arquivos fonte.

A suíte de testes é executada em cada pull request e deve passar antes do merge.

Como reportar uma vulnerabilidade de segurança?

Não abra uma issue pública no GitHub. Em vez disso, use os GitHub Security Advisories para reportar vulnerabilidades de forma privada. Os mantenedores irão triar o relatório, coordenar uma correção e publicar uma release de segurança.

Para mais informações, veja o arquivo SECURITY.md no repositório.

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