Adaptation 套件
Adaptation · LGPL-3.0Adaptation 套件提供一個與 TCPDF 6.2.13 向下相容的無痛替換轉接器。它將 252 個舊版方法映射到 TCPDF-Next 的現代 API,讓現有的 TCPDF 程式碼庫只需最少的變更即可完成遷移。
何時使用 Adaptation
| 使用情境 | 建議 |
|---|---|
| 現有 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
