常見問題
為什麼 TCPDF-Next 需要 PHP 8.5+?
PHP 8.5 引入了對函式庫架構至關重要的語言特性 — 包括管道運算子(pipe operator)、改進的型別推斷,以及增強的 readonly 語意。鎖定現代執行環境讓 TCPDF-Next 能夠在設計層面做到更小、更快、更安全,而非靠變通方案。
深入了解請參見為什麼選擇 PHP 8.5?。
TCPDF-Next 是 TCPDF 的 fork 嗎?
不是。 TCPDF-Next 是完全從零開始的重寫。它與原版 TCPDF 函式庫沒有共用任何程式碼。名稱中的「TCPDF」部分是向 PDF 產生領域(PHP 中的 PDF 產生)以及舊版專案對社群的影響致敬,但架構、API 介面和實作都是全新的。
可以不用 Laravel 嗎?
可以。 tcpdf-next/core 套件完全不依賴框架。它只需要 PHP 8.5+,零框架相依性。你可以在任何 PHP 應用程式中使用 — Symfony、Slim、原生 PHP 腳本、CLI 工具或佇列 Worker。
選用的 tcpdf-next/laravel 套件增加了 Laravel 專屬的便利功能(Service Provider、Facade、設定發佈),但並非必要。
Core 和 Pro 有什麼差別?
| Core | Pro | |
|---|---|---|
| 授權 | MIT | 商業授權 |
| PDF 產生 | 全功能 | 全功能 |
| 進階排版 | 基本 | OpenType shaping、BiDi、連字 |
| 數位簽章 | 未包含 | PAdES / CAdES / X.509 |
| PDF/A、PDF/X | 未包含 | 完整合規模式 |
| 條碼引擎 | 1D 條碼 | 1D + 2D(QR、DataMatrix、PDF417) |
| 技術支援 | 社群(GitHub Issues) | 優先電子郵件 + SLA |
Core 本身即可投入生產使用。Pro 為其擴展企業級與合規功能。
如何使用完整 CSS3 支援的 HTML 轉 PDF?
使用 Artisan 套件(tcpdf-next/artisan)。它提供渲染管線,接受 HTML + CSS3 輸入並產生像素精確的 PDF 輸出,底層由 TCPDF-Next Core 驅動。
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;
$renderer = HtmlRenderer::create();
$renderer->loadHtml('<h1>Hello</h1><p style="color: navy;">帶樣式的段落。</p>');
$renderer->save('/output/report.pdf');Artisan 支援 Flexbox、Grid、網頁字型、媒體查詢及大部分 CSS3 規範。
TCPDF-Next 支援 CJK(中日韓)嗎?
支援。 TCPDF-Next 對 CJK 文字與複雜文字排版有一流的支援:
- CjkFontValidator — 驗證並子集化 CJK 字型檔案,確保正確的字形涵蓋。
- BiDiResolver — 處理雙向文字(例如英文與阿拉伯文/希伯來文混排)。
- ArabicShaper — 為阿拉伯文、波斯文和烏爾都文套用上下文整形規則。
透過字型設定嵌入任何支援 CJK 的 TrueType/OpenType 字型,文字渲染自動生效。
$doc->configureFonts(function (FontConfig $config): void {
$config->addFont('/fonts/NotoSansCJK-Regular.ttc', alias: 'NotoSansCJK');
});
$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界'); // 中文
$doc->cell(text: 'こんにちは世界'); // 日文
$doc->cell(text: '안녕하세요 세계'); // 韓文TCPDF-Next 可以用於生產環境嗎?
可以。函式庫有嚴謹的測試與分析流程支撐:
- 908+ 個測試涵蓋單元測試、整合測試與視覺迴歸場景。
- 28,881+ 個斷言遍及整個測試套件。
- PHPStan level 8 — 最嚴格的靜態分析等級 — 零錯誤通過。
- 100%
declare(strict_types=1)覆蓋每個原始碼檔案。
測試套件在每個 Pull Request 上執行,並要求通過後才能合併。
如何回報安全漏洞?
請勿建立公開的 GitHub Issue。 請使用 GitHub Security Advisories 私下回報漏洞。維護者會分級處理報告、協調修復,並發佈安全性更新。
更多資訊請參見儲存庫中的 SECURITY.md。