Skip to content

Tabel

Buat tabel profesional menggunakan method writeHtml() TCPDF-Next. Method ini mendukung <thead>, <tbody>, <tfoot>, colspan, rowspan, dan CSS inline.

Contoh Lengkap

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

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

PropertiContoh
background-color#1a2634, rgb(26,38,52)
color#ffffff
font-weightbold
text-alignleft, center, right
padding6px 8px
border-bottom1px solid #dee2e6
width100%, 60mm
vertical-alignmiddle, 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.

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