Filosofi Desain
TCPDF-Next terinspirasi dari TCPDF tetapi merupakan penulisan ulang total dari nol untuk era PHP modern. Ini bukan fork, bukan upgrade inkremental — ini adalah library yang sepenuhnya baru yang dibangun di atas arsitektur generasi berikutnya.
TCPDF asli melayani komunitas PHP dengan baik selama lebih dari satu dekade. Tetapi arsitektur file-tunggal 30.000 barisnya tidak dapat mendukung tuntutan pembuatan PDF modern: kepatuhan PDF 2.0, tanda tangan digital PAdES, arsip PDF/A-4, atau integrasi dengan framework seperti Laravel.
TCPDF-Next mempertahankan konsep yang dikenal developer PHP — addPage(), cell(), setFont() — sambil membangun ulang semuanya di bawah untuk memenuhi standar 2026.
Sekilas
| TCPDF Asli | TCPDF-Next | |
|---|---|---|
| Versi PHP | 5.x – 8.x | 8.5+ saja |
| Spesifikasi PDF | 1.4 – 1.7 | 2.0 (ISO 32000-2:2020) |
| Arsitektur | Class ~30K baris tunggal | 213 file, 26 modul, 12 trait composable |
| Type safety | Tidak ada | PHPStan Level 10, backed enum, class readonly |
| Tanda tangan | PKCS#7 dasar | PAdES B-B (Core) → B-LTA (Pro) |
| Arsip | PDF/A-1b (parsial) | PDF/A-4 (ISO 19005-4:2020) |
| Rendering HTML | Built-in (CSS terbatas) | Built-in + Chrome CDP (CSS3 penuh) |
| Testing | ~50 test | 908+ test, 28.881+ assertion |
| Ekstensibilitas | Subclass monolith | Ekosistem modular + API ekstensi |
Arsitektur Ekosistem
TCPDF-Next bukan monolith. Ini adalah ekosistem modular dari empat paket, masing-masing dengan tanggung jawab yang jelas:
Core
PDF 2.0 Engine
Chrome CDP
Enterprise
Laravel 12
Symfony 7
CodeIgniter 4
Migrasi TCPDF
- Core (148 file) — Mesin PDF. Semua yang Anda butuhkan untuk pembuatan dokumen, tipografi, barcode, enkripsi, dan tanda tangan PAdES B-B.
- Artisan (17 file) — Integrasi Chrome CDP untuk rendering HTML/CSS3 pixel-perfect. Output PDF yang bisa diseleksi teksnya via Form XObject, bukan gambar raster.
- Laravel (4 file) — Integrasi framework zero-config. Facade, respons HTTP, queue job, binding Octane-safe.
- Pro (47 file) — Fitur profesional. PAdES B-T hingga B-LTA, PDF/A-4, HSM signing, barcode khusus.
API ekstensi terbuka: developer pihak ketiga dapat membangun ekstensi mereka sendiri yang terhubung ke Core melalui interface yang dipublikasikan (PdfDocumentInterface, SignerInterface, FontManagerInterface, HsmSignerInterface).
12 Trait Composable
Class Document adalah satu titik masuk. Alih-alih class monolitik, fungsionalitasnya terdiri dari 12 trait yang terfokus:
| Trait | Tanggung Jawab |
|---|---|
HasMetadata | Title, author, subject, keyword, bahasa |
HasPages | Manajemen halaman, ukuran, margin, grup halaman |
HasTypography | Pemuatan font, ukuran, dekorasi teks, RTL, BiDi |
HasColors | RGB, CMYK, spot color, alpha, blend mode |
HasTextOutput | cell(), multiCell(), text(), write(), writeHtml() |
HasDrawing | Shape, gradien, pattern, SVG, EPS, gambar |
HasTransforms | Scale, rotate, translate, skew, mirror |
HasLayout | Header, footer, kolom, booklet |
HasNavigation | Bookmark, link, TOC, anotasi, lampiran file |
HasInteractive | Form field, layer, template, JavaScript |
HasSecurity | Enkripsi, tanda tangan digital, tagged PDF, BiDi, linearisasi |
HasOutput | output(), save(), getPdfData(), streaming |
Setiap method public mengembalikan static untuk fluent chaining:
$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'); // HasOutputSelanjutnya
- Deep Dive Arsitektur -- Peta namespace, batas modul, inisialisasi lazy
- Membangun Ekstensi -- Cara membangun ekstensi pihak ketiga
- Mengapa PHP 8.5+? -- Pilihan yang disengaja dan panduan Docker