Konfigurasi
TCPDF-Next hadir dengan default yang masuk akal dan langsung berfungsi. Setiap pengaturan dapat di-override saat pembuatan dokumen atau nanti melalui fluent setter.
Default Dokumen
Saat Anda memanggil Document::create(), default berikut berlaku kecuali Anda menentukan sebaliknya:
| Pengaturan | Default | Deskripsi |
|---|---|---|
| Ukuran halaman | PageSize::A4 | ISO A4 (210 x 297 mm) |
| Orientasi | Orientation::Portrait | Mode portrait |
| Satuan | Unit::Millimeter | Semua pengukuran dalam milimeter |
| Margin kiri | 15 mm | Margin kiri halaman |
| Margin atas | 27 mm | Margin atas halaman |
| Margin kanan | 15 mm | Margin kanan halaman |
| Margin bawah | 25 mm | Margin bawah halaman |
| Auto page break | true | Page break otomatis di dekat margin bawah |
| Font | Helvetica, 12 pt | Font family dan ukuran default |
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;
$doc = Document::create(
pageSize: PageSize::Letter,
orientation: Orientation::Landscape,
unit: Unit::Inch,
);Margin
Margin dapat diatur secara global atau per halaman:
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;
// Margin global
$doc->setMargins(new Margin(
left: 20,
top: 30,
right: 20,
bottom: 25,
));
// Override untuk halaman tertentu
$doc->addPage(
margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);Path dan Direktori Font
TCPDF-Next mencari file font di sekumpulan direktori yang dapat dikonfigurasi. Font built-in (Helvetica, Courier, Times, Symbol, ZapfDingbats) selalu tersedia. Untuk font kustom atau Unicode, daftarkan path tambahan:
use Yeeefang\TcpdfNext\Core\Config\FontConfig;
$doc->configureFonts(function (FontConfig $config): void {
// Tambah direktori yang berisi file .ttf / .otf
$config->addDirectory('/path/to/my/fonts');
// Tambah satu file font dengan alias family
$config->addFont('/path/to/MyFont-Regular.ttf', alias: 'MyFont');
});TIP
File font di-embed sebagai subset secara default, menjaga output PDF tetap kompak. Full embedding dapat diaktifkan per font jika diperlukan.
Pengaturan Enkripsi
Enkripsi PDF dikonfigurasi melalui value object EncryptionConfig:
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;
$doc->setEncryption(new EncryptionConfig(
level: EncryptionLevel::AES256,
userPassword: 'reader-pass',
ownerPassword: 'admin-pass',
permissions: [
Permission::Print,
Permission::Copy,
],
));| Level | Deskripsi |
|---|---|
EncryptionLevel::RC4_40 | RC4 40-bit legacy (tidak direkomendasikan) |
EncryptionLevel::RC4_128 | RC4 128-bit |
EncryptionLevel::AES128 | AES 128-bit |
EncryptionLevel::AES256 | AES 256-bit (direkomendasikan) |
Pengaturan Tagged PDF
Tagged (accessible) PDF meningkatkan dukungan screen reader dan diperlukan oleh PDF/UA. Aktifkan tagging secara global:
$doc->enableTaggedPdf();
// Opsional, atur bahasa dokumen untuk aksesibilitas
$doc->setLanguage('id');Saat mode tagged PDF aktif, tag struktural (<P>, <H1>-<H6>, <Table>, dll.) dihasilkan secara otomatis oleh API teks dan tabel.
Mode Deterministik
Secara default, PDF berisi timestamp dan identifier unik yang membuat setiap output berbeda. Mode deterministik menghilangkan ini, menghasilkan output byte-identical untuk input yang sama — berguna untuk snapshot testing dan reproducible build:
$doc->enableDeterministicMode();WARNING
Mode deterministik menghapus tanggal pembuatan/modifikasi dan identifier file unik. Jangan gunakan untuk dokumen yang memerlukan field metadata ini.
Contoh Konfigurasi Lengkap
Berikut snippet tunggal yang menampilkan semua opsi konfigurasi utama bersama-sama:
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Config\FontConfig;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;
$doc = Document::create(
pageSize: PageSize::A4,
orientation: Orientation::Portrait,
unit: Unit::Millimeter,
);
// Margin
$doc->setMargins(new Margin(
left: 15,
top: 27,
right: 15,
bottom: 25,
));
// Font
$doc->configureFonts(function (FontConfig $config): void {
$config->addDirectory('/path/to/fonts');
});
// Enkripsi
$doc->setEncryption(new EncryptionConfig(
level: EncryptionLevel::AES256,
userPassword: '',
ownerPassword: 'secret',
permissions: [Permission::Print],
));
// Aksesibilitas
$doc->enableTaggedPdf();
$doc->setLanguage('id');
// Output deterministik (untuk test)
// $doc->enableDeterministicMode();
// Metadata
$doc->setTitle('Company Report');
$doc->setAuthor('TCPDF-Next');
$doc->setSubject('Monthly Summary');
$doc->setKeywords('report, finance, 2026');
$doc->addPage();
$doc->cell(text: 'Hello, configured world!');
$doc->save('/tmp/configured.pdf');