Skip to content

Output Teks (HasTextOutput)

Trait HasTextOutput menyediakan method utama untuk menempatkan teks di halaman. Setiap method melayani model layout yang berbeda: cell tetap, teks mengalir, posisi absolut, dan rendering HTML.

Referensi Cepat

MethodModel LayoutWrapping
cell()Kotak satu barisTidak — teks dipotong
multiCell()Blok multi-barisYa — auto-wrap sesuai lebar cell
text()Posisi absolutTidak
write()Aliran inlineYa — mengalir seperti word processor
writeHtml()Blok HTMLYa — layout HTML penuh
writeHtmlCell()HTML dalam cell berposisiYa
ln()Line breakN/A

Contoh Dasar

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Cell satu baris', newLine: true)
    ->multiCell(0, 10, 'Ini adalah teks panjang yang akan otomatis wrap ke beberapa baris saat mencapai tepi area cetak.')
    ->ln(5)
    ->text(50.0, 100.0, 'Teks posisi absolut')
    ->write(10, 'Teks inline yang ')
    ->write(10, 'terus mengalir.');

Semua method mengembalikan static, jadi setiap panggilan bisa di-chain.

cell()

Menggambar cell persegi panjang satu baris dengan border, fill background, alignment, dan link opsional.

php
$pdf->cell(
    float  $w,           // Lebar (0 = perpanjang ke margin kanan)
    float  $h,           // Tinggi
    string $txt,         // Konten teks
    mixed  $border = 0,  // 0, 1, atau kombinasi 'LTRB'
    bool   $newLine = false,
    string $align  = '',  // L, C, R, J
    bool   $fill   = false,
    mixed  $link   = '',
);

Kursor berpindah ke kanan cell (atau ke baris berikutnya saat $newLine adalah true).

Alignment

php
use Yeeefang\TcpdfNext\Contracts\Enums\Alignment;

$pdf->cell(0, 10, 'Rata kiri')
    ->ln()
    ->cell(0, 10, 'Tengah', align: 'C')
    ->ln()
    ->cell(0, 10, 'Rata kanan', align: 'R')
    ->ln()
    ->cell(0, 10, 'Teks justified dalam cell', align: 'J');

Border

php
// Tanpa border
$pdf->cell(60, 10, 'Tanpa border', border: 0);

// Frame penuh
$pdf->cell(60, 10, 'Frame penuh', border: 1);

// Sisi individual — Left, Top, Right, Bottom
$pdf->cell(60, 10, 'Atas dan bawah', border: 'TB');
$pdf->cell(60, 10, 'Kiri saja', border: 'L');

Fill

php
$pdf->setFillColor(230, 230, 250)
    ->cell(0, 10, 'Background lavender', fill: true, newLine: true);

multiCell()

Merender blok teks multi-baris yang auto-wrap pada lebar yang ditentukan. Setelah output, kursor berpindah ke bawah cell.

php
$pdf->multiCell(
    float  $w,           // Lebar (0 = perpanjang ke margin kanan)
    float  $h,           // Tinggi baris minimum
    string $txt,         // Konten teks
    mixed  $border = 0,
    string $align  = 'J',
    bool   $fill   = false,
);
php
$pdf->setFont('Helvetica', '', 11)
    ->multiCell(80, 6, 'Paragraf ini akan wrap pada lebar 80mm. Teks mengalir secara alami, menghormati batas kata dan aturan hyphenation.', border: 1, align: 'J');

text()

Menempatkan satu string pada posisi (x, y) absolut. Kursor tidak dipindahkan setelahnya — ini adalah method "fire and forget".

php
$pdf->text(20.0, 50.0, 'Diposisikan di x=20, y=50');

Gunakan text() untuk watermark, label, atau konten overlay di mana Anda mengontrol posisi persis.

write()

Menulis teks inline pada posisi kursor saat ini. Teks wrap secara otomatis saat mencapai margin kanan, seperti mengetik di word processor.

php
$pdf->setFont('Helvetica', '', 12)
    ->write(6, 'Kalimat ini dimulai di sini dan ')
    ->setFont('Helvetica', 'B', 12)
    ->write(6, 'bagian ini bold')
    ->setFont('Helvetica', '', 12)
    ->write(6, ' lalu kembali ke normal.');

Parameter pertama ($h) adalah tinggi baris. Gunakan write() saat Anda membutuhkan perubahan font atau style di tengah kalimat.

writeHtml()

Merender string HTML menggunakan parser HTML built-in. Mendukung tag umum termasuk heading, paragraf, tabel, list, dan inline style.

php
$pdf->writeHtml('<h2>Judul Bagian</h2><p>Paragraf dengan teks <b>bold</b> dan <i>italic</i>.</p>');

Tabel

php
$html = '
<table border="1" cellpadding="4">
    <thead>
        <tr>
            <th>Produk</th>
            <th>Qty</th>
            <th>Harga</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Widget A</td>
            <td align="center">10</td>
            <td align="right">$25.00</td>
        </tr>
        <tr>
            <td>Widget B</td>
            <td align="center">5</td>
            <td align="right">$42.50</td>
        </tr>
    </tbody>
</table>';

$pdf->writeHtml($html);

writeHtmlCell()

Menggabungkan rendering HTML dengan posisi cell. Konten HTML ditempatkan di dalam cell pada koordinat yang ditentukan.

php
$pdf->writeHtmlCell(
    float  $w,     // Lebar
    float  $h,     // Tinggi minimum
    float  $x,     // Posisi X
    float  $y,     // Posisi Y
    string $html,
    mixed  $border = 0,
    bool   $fill   = false,
);
php
$pdf->writeHtmlCell(90, 0, 10, 50, '<p style="color:#336699;">Konten HTML berposisi dengan <b>formatting</b>.</p>', border: 1);

ln()

Menyisipkan line break. Kursor berpindah ke margin kiri dan turun sesuai tinggi yang ditentukan.

php
$pdf->ln();       // Line break menggunakan tinggi cell terakhir
$pdf->ln(10);     // Line break dengan jarak vertikal 10mm
$pdf->ln(0);      // Pindah ke margin kiri tanpa pergerakan vertikal

Memilih Method yang Tepat

SkenarioMethod
Cell tabel, label, data satu bariscell()
Paragraf, deskripsi, teks panjangmultiCell()
Watermark, cap, label absoluttext()
Teks inline dengan format campuranwrite()
Konten kaya dengan markup HTMLwriteHtml()
Konten HTML pada posisi tertentuwriteHtmlCell()

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