Skip to content

Domande Frequenti

Perché TCPDF-Next richiede PHP 8.5+?

PHP 8.5 introduce funzionalità linguaggio fondamentali per l'architettura della libreria — incluso supporto pipe operator, inferenza di tipo migliorata e semantica readonly potenziata. Puntare a un runtime moderno consente a TCPDF-Next di essere più piccola, veloce e sicura by design piuttosto che by workaround.

Per una motivazione più approfondita, vedi Perché PHP 8.5?.

TCPDF-Next è un fork di TCPDF?

No. TCPDF-Next è una riscrittura completa da zero. Non condivide codice con la libreria TCPDF originale. La porzione "TCPDF" del nome riconosce il dominio problema (generazione PDF in PHP) e l'influenza del progetto legacy sulla community, ma l'architettura, la superficie API e l'implementazione sono interamente nuove.

Posso usarlo senza Laravel?

Sì. Il pacchetto tcpdf-next/core è completamente framework-agnostic. Dipende solo da PHP 8.5+ e ha zero dipendenze framework. Puoi usarlo in qualsiasi applicazione PHP — Symfony, Slim, script PHP vanilla, strumenti CLI o queue worker.

Il pacchetto opzionale tcpdf-next/laravel aggiunge comodità specifiche Laravel (service provider, Facade, pubblicazione config) ma non è richiesto.

Qual è la differenza tra Core e Pro?

CorePro
LicenzaMITCommerciale
Generazione PDFFull-featuredFull-featured
Tipografia avanzataBaseShaping OpenType, BiDi, legature
Firme digitaliNon inclusePAdES / CAdES / X.509
PDF/A, PDF/XNon inclusiModalità conformità complete
Motore barcodeCodici a barre 1D1D + 2D (QR, DataMatrix, PDF417)
SupportoCommunity (GitHub Issues)Email prioritaria + SLA

Core è production-ready da solo. Pro lo estende con funzionalità enterprise e conformità.

Come genero HTML-to-PDF con supporto CSS3 completo?

Usa il pacchetto Artisan (tcpdf-next/artisan). Fornisce una pipeline di rendering che accetta input HTML + CSS3 e produce output PDF pixel-accurate, alimentato da TCPDF-Next Core sotto il cofano.

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

Artisan supporta Flexbox, Grid, web font, media query e la maggior parte della specifica CSS3.

TCPDF-Next supporta CJK (Cinese, Giapponese, Coreano)?

Sì. TCPDF-Next ha supporto di prima classe per script CJK e layout di testo complessi:

  • CjkFontValidator — valida e sottoinsiemi file font CJK, garantendo copertura glifo corretta.
  • BiDiResolver — gestisce testo bidirezionale (es. Inglese e Arabo/Ebraico misti).
  • ArabicShaper — applica regole shaping contestuali per Arabo, Farsi e Urdu.

Incorpora qualsiasi font TrueType/OpenType compatibile CJK tramite la configurazione font, e il rendering testo funziona automaticamente.

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

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

TCPDF-Next è production-ready?

Sì. La libreria è supportata da una rigorosa pipeline di testing e analisi:

  • 908+ test coprendo scenari unit, integrazione e regressione visuale.
  • 28,881+ asserzioni attraverso la suite di test.
  • PHPStan Level 10 — il livello di analisi statica più strict — passa con zero errori.
  • 100% declare(strict_types=1) attraverso ogni file sorgente.

La suite di test viene eseguita su ogni pull request ed è richiesta per passare prima del merge.

Come segnalo una vulnerabilità di sicurezza?

Non aprire un issue pubblico GitHub. Invece, usa GitHub Security Advisories per segnalare vulnerabilità privatamente. I maintainer classificheranno la segnalazione, coordineranno un fix e pubblicheranno un rilascio di sicurezza.

Per maggiori informazioni, vedi il file SECURITY.md nel repository.

Rilasciato sotto licenza LGPL-3.0-or-later.