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?
| Core | Pro | |
|---|---|---|
| Licenza | MIT | Commerciale |
| Generazione PDF | Full-featured | Full-featured |
| Tipografia avanzata | Base | Shaping OpenType, BiDi, legature |
| Firme digitali | Non incluse | PAdES / CAdES / X.509 |
| PDF/A, PDF/X | Non inclusi | Modalità conformità complete |
| Motore barcode | Codici a barre 1D | 1D + 2D (QR, DataMatrix, PDF417) |
| Supporto | Community (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.
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.
$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: '안녕하세요 세계'); // CoreanoTCPDF-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.