Skip to content

Pertanyaan yang Sering Diajukan

Mengapa TCPDF-Next memerlukan PHP 8.5+?

PHP 8.5 memperkenalkan fitur bahasa yang fundamental bagi arsitektur library — termasuk dukungan pipe operator, inferensi tipe yang lebih baik, dan semantik readonly yang ditingkatkan. Menargetkan runtime modern memungkinkan TCPDF-Next menjadi lebih kecil, lebih cepat, dan lebih aman secara desain daripada secara workaround.

Untuk alasan lebih mendalam, lihat Mengapa PHP 8.5?.

Apakah TCPDF-Next fork dari TCPDF?

Tidak. TCPDF-Next adalah penulisan ulang total dari awal. Library ini tidak berbagi kode apapun dengan library TCPDF original. Bagian "TCPDF" dari nama mengakui domain masalah (pembuatan PDF di PHP) dan pengaruh proyek legacy pada komunitas, tetapi arsitektur, API surface, dan implementasinya sepenuhnya baru.

Bisakah saya menggunakannya tanpa Laravel?

Ya. Package tcpdf-next/core sepenuhnya framework-agnostic. Package ini hanya bergantung pada PHP 8.5+ dan tidak memiliki dependensi framework. Anda dapat menggunakannya di aplikasi PHP manapun — Symfony, Slim, script PHP vanilla, tool CLI, atau queue worker.

Package tcpdf-next/laravel opsional menambahkan kemudahan khusus Laravel (service provider, Facade, config publishing) tetapi tidak diperlukan.

Apa perbedaan antara Core dan Pro?

CorePro
LisensiMITKomersial
Pembuatan PDFFitur lengkapFitur lengkap
Tipografi lanjutanDasarOpenType shaping, BiDi, ligature
Tanda tangan digitalTidak termasukPAdES / CAdES / X.509
PDF/A, PDF/XTidak termasukMode kepatuhan penuh
Engine barcodeBarcode 1D1D + 2D (QR, DataMatrix, PDF417)
DukunganKomunitas (GitHub Issues)Email prioritas + SLA

Core sudah production-ready sendiri. Pro memperluas dengan fitur enterprise dan kepatuhan.

Bagaimana cara membuat HTML-to-PDF dengan dukungan CSS3 penuh?

Gunakan package Artisan (tcpdf-next/artisan). Package ini menyediakan pipeline rendering yang menerima input HTML + CSS3 dan menghasilkan output PDF yang pixel-accurate, didukung oleh TCPDF-Next Core di dalamnya.

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();
$renderer->loadHtml('<h1>Hello</h1><p style="color: navy;">Paragraf bergaya.</p>');
$renderer->save('/output/report.pdf');

Artisan mendukung Flexbox, Grid, web font, media query, dan sebagian besar spesifikasi CSS3.

Apakah TCPDF-Next mendukung CJK (China, Jepang, Korea)?

Ya. TCPDF-Next memiliki dukungan kelas satu untuk script CJK dan layout teks kompleks:

  • CjkFontValidator — memvalidasi dan melakukan subset file font CJK, memastikan cakupan glyph yang benar.
  • BiDiResolver — menangani teks bidirectional (misalnya campuran bahasa Inggris dan Arab/Ibrani).
  • ArabicShaper — menerapkan aturan shaping kontekstual untuk bahasa Arab, Farsi, dan Urdu.

Embed font TrueType/OpenType yang mendukung CJK melalui konfigurasi font, dan rendering teks berfungsi secara otomatis.

php
$doc->configureFonts(function (FontConfig $config): void {
    $config->addFont('/fonts/NotoSansCJK-Regular.ttc', alias: 'NotoSansCJK');
});

$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界');        // China
$doc->cell(text: 'こんにちは世界');   // Jepang
$doc->cell(text: '안녕하세요 세계');   // Korea

Apakah TCPDF-Next production-ready?

Ya. Library ini didukung oleh pipeline testing dan analisis yang ketat:

  • 908+ test mencakup skenario unit, integrasi, dan regresi visual.
  • 28.881+ assertion di seluruh test suite.
  • PHPStan Level 10 — level static analysis paling ketat — lolos dengan nol error.
  • 100% declare(strict_types=1) di setiap file sumber.

Test suite dijalankan pada setiap pull request dan harus lolos sebelum merge.

Bagaimana cara melaporkan kerentanan keamanan?

Jangan buka GitHub issue publik. Sebagai gantinya, gunakan GitHub Security Advisories untuk melaporkan kerentanan secara privat. Maintainer akan melakukan triage laporan, mengoordinasikan perbaikan, dan menerbitkan security release.

Untuk informasi lebih lanjut, lihat file SECURITY.md di repository.

Didistribusikan di bawah lisensi LGPL-3.0-or-later.