Skip to content

常见问题

为什么 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 有什么区别?

CorePro
授权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 驱动。

php
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 字体,文字渲染自动生效。

php
$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

以 LGPL-3.0-or-later 许可证发布。