Skip to content

設計理念

TCPDF-Next 受 TCPDF 啟發,但完全從零重寫,專為現代 PHP 時代打造。它不是 fork,也不是漸進式升級——而是一套基於次世代架構的全新函式庫。

原版 TCPDF 為 PHP 社群服務了超過十年,貢獻卓越。然而,其單檔、三萬行的架構已無法應對現代 PDF 生成的需求:PDF 2.0 規範、PAdES 數位簽章、PDF/A-4 歸檔,或是與 Laravel 等框架的深度整合。

TCPDF-Next 保留了 PHP 開發者熟悉的概念——addPage()cell()setFont()——但底層全部重新打造,以符合 2026 年的標準。

總覽

原版 TCPDFTCPDF-Next
PHP 版本5.x – 8.x僅限 8.5+
PDF 規範1.4 – 1.72.0 (ISO 32000-2:2020)
架構單一 ~30K 行的類別213 個檔案、26 個模組、12 個可組合 Trait
型別安全PHPStan level 8,backed enum,readonly 類別
數位簽章基本 PKCS#7PAdES B-B (Core) → B-LTA (Pro)
歸檔PDF/A-1b(部分)PDF/A-4 (ISO 19005-4:2020)
HTML 渲染內建(有限 CSS)內建 + Chrome CDP(完整 CSS3)
測試~50 個測試908+ 個測試、28,881+ 個斷言
擴充性繼承單體類別模組化生態系 + 擴充 API

生態系架構

TCPDF-Next 並非單體應用。它是一個由四個套件組成的模組化生態系,每個套件各司其職:

TCPDF-Next
Core
Artisan
Chrome CDP
Laravel
Framework
Pro
Enterprise
  • Core(148 個檔案)— PDF 引擎。涵蓋文件生成、排版、條碼、加密及 PAdES B-B 數位簽章所需的一切。
  • Artisan(17 個檔案)— Chrome CDP 整合,實現像素等級的 HTML/CSS3 渲染。透過 Form XObject 輸出可選取文字的 PDF,而非點陣化影像。
  • Laravel(4 個檔案)— 零設定的框架整合。Facade、HTTP 回應、佇列工作、Octane 安全的繫結。
  • Pro(47 個檔案)— 企業級功能。PAdES B-T 到 B-LTA、PDF/A-4、HSM 簽章、特殊條碼。

擴充 API 是開放的:第三方開發者可以打造自己的擴充套件,透過公開的介面(PdfDocumentInterfaceSignerInterfaceFontManagerInterfaceHsmSignerInterface)接入 Core。

12 個可組合 Trait

Document 類別是唯一的進入點。它的功能並非來自一個巨大的單體類別,而是由 12 個專責的 Trait 組合而成:

Trait職責
HasMetadata標題、作者、主旨、關鍵字、語言
HasPages頁面管理、尺寸、邊距、頁面群組
HasTypography字型載入、大小、文字裝飾、RTL、BiDi
HasColorsRGB、CMYK、特別色、透明度、混合模式
HasTextOutputcell()、multiCell()、text()、write()、writeHtml()
HasDrawing形狀、漸層、圖案、SVG、EPS、影像
HasTransforms縮放、旋轉、平移、傾斜、鏡像
HasLayout頁首頁尾、欄位排版、騎馬釘排版
HasNavigation書籤、連結、目錄、註解、檔案附件
HasInteractive表單欄位、圖層、範本、JavaScript
HasSecurity加密、數位簽章、標記式 PDF、BiDi、線性化
HasOutputoutput()、save()、getPdfData()、串流

所有公開方法都回傳 static,支援鏈式 API:

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

接下來

以 LGPL-3.0-or-later 授權釋出。