Adaptation 包
Adaptation · LGPL-3.0Adaptation 包提供了 TCPDF 6.2.13 的即插即用向后兼容适配器。它将 252 个旧版方法映射到 TCPDF-Next 的现代 API,让现有的 TCPDF 代码库只需最少的代码改动即可完成迁移。
适用场景
| 场景 | 建议 |
|---|---|
| 现有 TCPDF 代码库(数百个调用) | 使用 Adaptation — 逐步迁移 |
| 从零开始的新项目 | 直接使用 Core — API 更清晰 |
重写了 Header() / Footer() | 使用 Adaptation — 非 final 类支持重写 |
| 使用了旧版辅助类 | 使用 Adaptation — 提供 TCPDF_STATIC、TCPDF_FONTS 等 |
安装
bash
composer require yeeefang/tcpdf-next-adaptation依赖: yeeefang/tcpdf-next ^1.7
快速开始
替换 TCPDF 的 import 语句,你的代码无需其他改动即可正常运行:
php
// 修改前(旧版 TCPDF)
// use TCPDF;
// 修改后(TCPDF-Next Adaptation)
use Yeeefang\TcpdfNext\Adaptation\TCPDF;
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8');
$pdf->SetCreator('My App');
$pdf->SetAuthor('Author');
$pdf->SetTitle('Document');
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Cell(0, 10, 'Hello World', 0, 1);
$pdf->Output('/path/to/output.pdf', 'F');方法映射
适配器将 252 个旧版 TCPDF 方法 映射到对应的 TCPDF-Next 方法,包括:
| 旧版方法 | TCPDF-Next 对应方法 |
|---|---|
SetFont() | setFont() |
Cell() | cell() |
MultiCell() | multiCell() |
writeHTML() | writeHtml() |
Image() | image() |
Output() | output() |
SetProtection() | setProtection() |
setSignature() | setSignature() |
Header / Footer 重写
TCPDF 适配器类是非 final 的,因此你可以像旧版 TCPDF 一样重写 Header() 和 Footer():
php
class MyPdf extends TCPDF
{
public function Header(): void
{
$this->SetFont('helvetica', 'B', 12);
$this->Cell(0, 10, 'My Header', 0, 1, 'C');
}
public function Footer(): void
{
$this->SetY(-15);
$this->SetFont('helvetica', 'I', 8);
$this->Cell(0, 10, 'Page ' . $this->getAliasNumPage(), 0, 0, 'C');
}
}旧版辅助类
如果你的代码引用了 TCPDF 的静态辅助类:
| 旧版类 | Adaptation 对应类 |
|---|---|
TCPDF_STATIC | Yeeefang\TcpdfNext\Adaptation\TCPDF_STATIC |
TCPDF_FONTS | Yeeefang\TcpdfNext\Adaptation\TCPDF_FONTS |
TCPDF_COLORS | Yeeefang\TcpdfNext\Adaptation\TCPDF_COLORS |
TCPDF_IMAGES | Yeeefang\TcpdfNext\Adaptation\TCPDF_IMAGES |
迁移策略
- 在现有代码旁安装 Adaptation 包
- 将
use语句从TCPDF改为Yeeefang\TcpdfNext\Adaptation\TCPDF - 运行现有测试 — 它们应该无需修改即可通过
- 在方便的时候逐步迁移到现代 Fluent API
- 完全迁移后,移除 Adaptation 包,直接使用 Core
