Skip to content

Penggunaan Dasar

Halaman ini membahas komponen dasar dari setiap dokumen TCPDF-Next: membuat dokumen, menambah halaman, menulis teks, menyisipkan gambar, dan menghasilkan output.

Membuat Dokumen

Static factory Document::create() adalah titik masuk tunggal untuk setiap PDF:

php
use Yeeefang\TcpdfNext\Core\Document;

$doc = Document::create();

Semua parameter bersifat opsional — default memberikan dokumen A4 portrait dalam milimeter. Lihat halaman Konfigurasi untuk daftar lengkap opsi.

Menambah Halaman

Dokumen dimulai kosong. Panggil addPage() minimal sekali sebelum menulis konten apapun:

php
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

// Tambah halaman dengan default dokumen
$doc->addPage();

// Tambah halaman Letter landscape dengan margin kustom
$doc->addPage(
    pageSize: PageSize::Letter,
    orientation: Orientation::Landscape,
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

Ukuran Halaman yang Tersedia

PageSize adalah backed enum yang mencakup semua ukuran standar ISO dan Amerika Utara:

Nilai EnumDimensi
PageSize::A3297 x 420 mm
PageSize::A4210 x 297 mm
PageSize::A5148 x 210 mm
PageSize::Letter215,9 x 279,4 mm
PageSize::Legal215,9 x 355,6 mm

Ukuran kustom didukung melalui PageSize::custom(width, height).

Mengatur Font

TCPDF-Next menyertakan font dasar PDF standar plus font DejaVu Sans yang mendukung Unicode.

php
// Font dasar built-in
$doc->setFont('Helvetica', size: 12);

// Font Unicode built-in
$doc->setFont('DejaVuSans', size: 10);

// Variasi Bold / Italic
$doc->setFont('Helvetica', style: FontStyle::Bold, size: 14);
$doc->setFont('Helvetica', style: FontStyle::BoldItalic, size: 14);

Font Kustom

Daftarkan font TrueType atau OpenType, lalu gunakan dengan alias-nya:

php
use Yeeefang\TcpdfNext\Core\Config\FontConfig;

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

$doc->setFont('Inter', size: 11);

Output Teks

TCPDF-Next menyediakan empat method untuk menempatkan teks di halaman. Masing-masing memenuhi kebutuhan layout yang berbeda.

cell()

Mencetak cell satu baris. Ideal untuk label, cell tabel, dan teks pendek:

php
$doc->cell(
    width: 80,
    height: 10,
    text: 'Invoice #1042',
    border: true,
    align: Align::Center,
);

multiCell()

Mencetak teks yang wrap otomatis dalam lebar tertentu. Kursor bergerak ke bawah setelah setiap panggilan:

php
$doc->multiCell(
    width: 0,        // 0 = lebar penuh yang tersedia
    height: 7,
    text: 'Ini adalah paragraf panjang yang akan wrap ke beberapa baris '
        . 'berdasarkan lebar yang tersedia dan ukuran font saat ini.',
);

text()

Menempatkan teks pada posisi (x, y) absolut. Tidak memindahkan kursor:

php
$doc->text(x: 105, y: 20, text: 'Judul Tengah', align: Align::Center);

write()

Menulis teks inline pada posisi kursor saat ini. Mendukung link dan mengalir secara alami dalam paragraf:

php
$doc->write(height: 5, text: 'Kunjungi ');
$doc->write(height: 5, text: 'dokumentasi TCPDF-Next', link: 'https://tcpdf-next.dev');
$doc->write(height: 5, text: ' untuk informasi lebih lanjut.');

Gambar

Dari Path File

php
$doc->imageFromFile(
    path: '/images/logo.png',
    x: 15,
    y: 15,
    width: 40,
);

Dari String atau Resource

php
$binary = file_get_contents('https://example.com/photo.jpg');

$doc->image(
    data: $binary,
    x: 15,
    y: 60,
    width: 50,
    type: 'JPEG',
);

Format yang didukung: PNG, JPEG, GIF, SVG, WebP.

Menyimpan dan Output

TCPDF-Next menawarkan beberapa cara untuk mendapatkan PDF akhir.

Simpan ke Disk

php
$doc->save('/reports/invoice-1042.pdf');

Kirim ke Browser

php
use Yeeefang\TcpdfNext\Core\Enums\OutputDestination;

// Tampilan inline (Content-Disposition: inline)
$doc->output('invoice.pdf', OutputDestination::Inline);

// Paksa download (Content-Disposition: attachment)
$doc->output('invoice.pdf', OutputDestination::Download);

Dapatkan Data PDF Mentah

php
$pdfBytes = $doc->getPdfData();

// Gunakan dengan response PSR-7, queue job, upload S3, dll.

Enum OutputDestination

NilaiPerilaku
OutputDestination::InlineKirim ke browser untuk tampilan inline
OutputDestination::DownloadKirim ke browser sebagai download file
OutputDestination::FileTulis ke path file (digunakan internal oleh save())
OutputDestination::StringKembalikan string binary mentah (digunakan internal oleh getPdfData())

Fluent API

Kebanyakan setter mengembalikan $this, memungkinkan gaya chained dan fluent:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Align;
use Yeeefang\TcpdfNext\Core\Enums\FontStyle;

$pdf = Document::create()
    ->setTitle('Monthly Report')
    ->setAuthor('Acme Corp')
    ->addPage(pageSize: PageSize::A4, orientation: Orientation::Portrait)
    ->setFont('Helvetica', style: FontStyle::Bold, size: 18)
    ->cell(width: 0, height: 15, text: 'Monthly Report — February 2026', align: Align::Center)
    ->ln()
    ->setFont('Helvetica', size: 11)
    ->multiCell(width: 0, height: 6, text: 'Laporan ini merangkum metrik utama...')
    ->save('/reports/monthly.pdf');

Contoh Lengkap

Menggabungkan semuanya:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\Align;
use Yeeefang\TcpdfNext\Core\Enums\FontStyle;
use Yeeefang\TcpdfNext\Core\Enums\OutputDestination;

$doc = Document::create();

$doc->setTitle('Hello World');
$doc->setAuthor('TCPDF-Next');

$doc->addPage();

// Header
$doc->setFont('Helvetica', style: FontStyle::Bold, size: 20);
$doc->cell(width: 0, height: 15, text: 'Hello, TCPDF-Next!', align: Align::Center);
$doc->ln(20);

// Body
$doc->setFont('DejaVuSans', size: 12);
$doc->multiCell(
    width: 0,
    height: 7,
    text: 'TCPDF-Next adalah library pembuatan PDF modern dan type-safe untuk PHP 8.5+. '
        . 'Library ini menyediakan API yang bersih, static analysis ketat, dan dukungan Unicode yang komprehensif.',
);

// Logo
$doc->imageFromFile(path: __DIR__ . '/logo.png', x: 15, y: 80, width: 30);

// Output
$doc->output('hello.pdf', OutputDestination::Download);

Langkah Selanjutnya

  • Konfigurasi — sesuaikan default, enkripsi, dan aksesibilitas.
  • Konfigurasi — pahami bagaimana Core, Pro, dan Artisan bekerja bersama.
  • FAQ — pertanyaan umum yang dijawab.

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