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 许可证发布。