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
| Method | Model Layout | Wrapping |
|---|---|---|
cell() | Kotak satu baris | Tidak — teks dipotong |
multiCell() | Blok multi-baris | Ya — auto-wrap sesuai lebar cell |
text() | Posisi absolut | Tidak |
write() | Aliran inline | Ya — mengalir seperti word processor |
writeHtml() | Blok HTML | Ya — layout HTML penuh |
writeHtmlCell() | HTML dalam cell berposisi | Ya |
ln() | Line break | N/A |
Contoh Dasar
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.
$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
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
// 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
$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.
$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,
);$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".
$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.
$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.
$pdf->writeHtml('<h2>Judul Bagian</h2><p>Paragraf dengan teks <b>bold</b> dan <i>italic</i>.</p>');Tabel
$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.
$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,
);$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.
$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 vertikalMemilih Method yang Tepat
| Skenario | Method |
|---|---|
| Cell tabel, label, data satu baris | cell() |
| Paragraf, deskripsi, teks panjang | multiCell() |
| Watermark, cap, label absolut | text() |
| Teks inline dengan format campuran | write() |
| Konten kaya dengan markup HTML | writeHtml() |
| Konten HTML pada posisi tertentu | writeHtmlCell() |