Tabel
Buat tabel profesional menggunakan method writeHtml() TCPDF-Next. Method ini mendukung <thead>, <tbody>, <tfoot>, colspan, rowspan, dan CSS inline.
Contoh Lengkap
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use TcpdfNext\Document;
$html = <<<'HTML'
<style>
table { width: 100%; border-collapse: collapse; }
th {
background-color: #1a2634;
color: #ffffff;
padding: 8px;
font-size: 10pt;
}
td {
padding: 6px 8px;
border-bottom: 1px solid #dee2e6;
font-size: 10pt;
}
tr:nth-child(even) { background-color: #f8f9fa; }
.right { text-align: right; }
.center { text-align: center; }
.total {
background-color: #1a2634;
color: #ffffff;
font-weight: bold;
}
</style>
<table border="1" cellpadding="5">
<thead>
<tr>
<th>SKU</th>
<th>Product</th>
<th class="center">Qty</th>
<th class="right">Unit Price</th>
<th class="right">Subtotal</th>
</tr>
</thead>
<tbody>
<tr>
<td>WDG-001</td>
<td>Precision Widget</td>
<td class="center">120</td>
<td class="right">$24.99</td>
<td class="right">$2,998.80</td>
</tr>
<tr>
<td>GDG-042</td>
<td>Gadget Pro</td>
<td class="center">85</td>
<td class="right">$49.95</td>
<td class="right">$4,245.75</td>
</tr>
<tr>
<td>SPR-007</td>
<td>Spring Assembly Kit</td>
<td class="center">340</td>
<td class="right">$12.50</td>
<td class="right">$4,250.00</td>
</tr>
</tbody>
<tfoot>
<tr class="total">
<td colspan="4" class="right">Grand Total</td>
<td class="right">$11,494.55</td>
</tr>
</tfoot>
</table>
HTML;
Document::create()
->setTitle('Product Inventory')
->addPage()
->setFont('helvetica', size: 10)
->writeHtml($html)
->save(__DIR__ . '/tables.pdf');
echo 'PDF created.' . PHP_EOL;colspan dan rowspan
Gabungkan sel secara horizontal dengan colspan dan vertikal dengan rowspan, persis seperti HTML standar:
$html = <<<'HTML'
<table border="1" cellpadding="6" style="width:100%;">
<tr style="background:#1a2634; color:#fff; font-weight:bold;">
<th colspan="4" style="text-align:center;">Quarterly Sales Report</th>
</tr>
<tr style="background:#2c3e50; color:#fff;">
<th>Quarter</th>
<th>Product A</th>
<th>Product B</th>
<th>Total</th>
</tr>
<tr>
<td>Q1</td>
<td class="right">$120,000</td>
<td class="right">$85,000</td>
<td class="right" style="font-weight:bold;">$205,000</td>
</tr>
<tr style="background:#f5f7fa;">
<td>Q2</td>
<td class="right">$135,000</td>
<td class="right">$92,000</td>
<td class="right" style="font-weight:bold;">$227,000</td>
</tr>
<tr>
<td rowspan="2" style="vertical-align:middle;">H2</td>
<td class="right">$148,000</td>
<td class="right">$103,000</td>
<td class="right" style="font-weight:bold;">$251,000</td>
</tr>
<tr>
<td class="right">$162,000</td>
<td class="right">$118,000</td>
<td class="right" style="font-weight:bold;">$280,000</td>
</tr>
<tr style="background:#1a2634; color:#fff; font-weight:bold;">
<td>Annual</td>
<td colspan="2" style="text-align:center;">--</td>
<td class="right">$963,000</td>
</tr>
</table>
HTML;
Document::create()
->setTitle('Quarterly Sales')
->addPage()
->setFont('helvetica', size: 10)
->writeHtml($html)
->save(__DIR__ . '/sales-report.pdf');Konsep Utama
writeHtml()
writeHtml(string $html): static me-render HTML langsung ke dalam PDF. Elemen tabel yang didukung: <table>, <thead>, <tbody>, <tfoot>, <tr>, <th>, <td>.
Dukungan CSS Inline
Properti CSS berikut berfungsi di dalam writeHtml():
| Properti | Contoh |
|---|---|
background-color | #1a2634, rgb(26,38,52) |
color | #ffffff |
font-weight | bold |
text-align | left, center, right |
padding | 6px 8px |
border-bottom | 1px solid #dee2e6 |
width | 100%, 60mm |
vertical-align | middle, top, bottom |
Layout Halaman
Pada halaman A4 dengan margin default 10 mm, lebar cetak adalah sekitar 190 mm. Mengatur width: 100% pada tabel mengisi seluruh area ini.
Output
Contoh pertama menghasilkan PDF satu halaman dengan tabel inventaris header gelap, warna baris bergantian, kolom mata uang rata kanan, dan footer grand total berbasis colspan.