Skip to content

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:

PengaturanDefaultDeskripsi
Ukuran halamanPageSize::A4ISO A4 (210 x 297 mm)
OrientasiOrientation::PortraitMode portrait
SatuanUnit::MillimeterSemua pengukuran dalam milimeter
Margin kiri15 mmMargin kiri halaman
Margin atas27 mmMargin atas halaman
Margin kanan15 mmMargin kanan halaman
Margin bawah25 mmMargin bawah halaman
Auto page breaktruePage break otomatis di dekat margin bawah
FontHelvetica, 12 ptFont family dan ukuran default
php
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:

php
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:

php
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:

php
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,
    ],
));
LevelDeskripsi
EncryptionLevel::RC4_40RC4 40-bit legacy (tidak direkomendasikan)
EncryptionLevel::RC4_128RC4 128-bit
EncryptionLevel::AES128AES 128-bit
EncryptionLevel::AES256AES 256-bit (direkomendasikan)

Pengaturan Tagged PDF

Tagged (accessible) PDF meningkatkan dukungan screen reader dan diperlukan oleh PDF/UA. Aktifkan tagging secara global:

php
$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:

php
$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:

php
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');

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