Cara Membuat PDF dengan PHP menggunakan TCPDF

Cara Membuat PDF dengan PHP menggunakan TCPDF

TCPDF adalah salah satu pustaka PHP yang populer untuk membuat file PDF secara langsung dari kode. Berikut adalah langkah-langkah untuk menggunakan TCPDF untuk membuat PDF.

1. Tanpa Database

1. Instalasi TCPDF

Unduh TCPDF melalui:

2. Membuat PDF dengan TCPDF

Contoh sederhana untuk membuat PDF.

Langkah 1: Buat file PHP, misalnya index.php.

<?php
require_once('tcpdf/tcpdf.php'); // Pastikan path ke TCPDF benar

// Buat instance TCPDF
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);

// Set metadata dokumen
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nama Anda');
$pdf->SetTitle('Judul Dokumen');
$pdf->SetSubject('Subjek PDF');
$pdf->SetKeywords('TCPDF, PDF, contoh, panduan');

// Set margin dokumen
$pdf->SetMargins(15, 15, 15);
$pdf->SetHeaderMargin(10);
$pdf->SetFooterMargin(10);

// Set header dan footer
$pdf->setPrintHeader(true);
$pdf->setPrintFooter(true);
$pdf->SetHeaderData('', 0, 'Judul Header', 'Deskripsi Header');
$pdf->setFooterData([0, 64, 0], [0, 64, 128]);

// Set font
$pdf->SetFont('helvetica', '', 12);

// Tambahkan halaman
$pdf->AddPage();

// Isi konten PDF
$html = <<<EOD
<h1>Halo Dunia!</h1>
<p>Ini adalah contoh dokumen PDF yang dibuat menggunakan <b>TCPDF</b>.</p>
<ul>
    <li>Fitur 1</li>
    <li>Fitur 2</li>
    <li>Fitur 3</li>
</ul>
EOD;

// Tulis konten ke PDF
$pdf->writeHTML($html, true, false, true, false, '');

// Output file PDF ke browser
$pdf->Output('contoh_dokumen.pdf', 'I'); // 'I' untuk menampilkan di browser, 'D' untuk unduh

3. Penjelasan Kode

  1. Instansiasi TCPDF:
    • Parameter:
      • 'P': Portrait (orientasi potret).
      • 'mm': Unit pengukuran (milimeter).
      • 'A4': Ukuran kertas.
  2. Metadata Dokumen:
    • Mengatur informasi dasar PDF seperti pembuat, judul, dan kata kunci.
  3. Header dan Footer:
    • Gunakan SetHeaderData dan setFooterData untuk mengatur isi header dan footer.
  4. Konten PDF:
    • Menggunakan metode writeHTML untuk menambahkan konten berbasis HTML.
  5. Output:
    • Output('nama_file.pdf', 'I'):
      • 'I': Tampilkan di browser.
      • 'D': Unduh langsung.
      • 'F': Simpan ke file di server.
      • 'S': Return sebagai string.

4. Menambahkan Gambar

Tambahkan gambar ke PDF dengan:

$pdf->Image('path_to_image.jpg', 15, 40, 50, 50, 'JPG', '', 'T', false, 300, '', false, false, 1, false, false, false);

5. Tambahan

Font Kustom

Jika menggunakan font kustom:

  1. Convert font menggunakan tcpdf_addfont.php yang ada di folder TCPDF.
  2. Tambahkan font ke PDF:
$pdf->SetFont('custom_font', '', 12);

Menggunakan Tabel HTML

TCPDF mendukung tabel berbasis HTML:

$html = <<<EOD
<table border="1" cellpadding="4">
    <tr>
        <th>Kolom 1</th>
        <th>Kolom 2</th>
    </tr>
    <tr>
        <td>Data 1</td>
        <td>Data 2</td>
    </tr>
</table>
EOD;
$pdf->writeHTML($html, true, false, true, false, '');
tcpdf tanpa database

6. Output

Buka file PHP (index.php) di browser, dan file PDF akan dihasilkan.

2. Dengan Database

Untuk membuat PDF menggunakan TCPDF dan data dari database SQL, Anda perlu mengambil data dari database dan memasukkannya ke dalam file PDF. Berikut langkah-langkahnya:

1. Persiapan Lingkungan

  1. Instal TCPDF:
    Unduh TCPDF dari situs resmi TCPDF
  2. Setup Database:
    Siapkan database SQL, misalnya MySQL, dan buat tabel contoh.

2. Contoh Database dan Tabel

Buat tabel SQL (MySQL):

CREATE DATABASE pdf_example;

USE pdf_example;

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(100),
    product_name VARCHAR(100),
    quantity INT,
    price DECIMAL(10,2)
);

INSERT INTO orders (customer_name, product_name, quantity, price) VALUES
('John Doe', 'Laptop', 1, 1500.00),
('Jane Smith', 'Smartphone', 2, 800.00),
('Mike Johnson', 'Tablet', 1, 500.00);

3. Membuat File PHP

Buat file index.php untuk menghubungkan database, mengambil data, dan menghasilkan PDF.

Kode PHP:

<?php
require_once('tcpdf/tcpdf.php'); // Pastikan path ke TCPDF benar

// Koneksi ke database
$host = "localhost";
$user = "root"; // Sesuaikan dengan username database
$pass = ""; // Sesuaikan dengan password database
$dbname = "pdf_example";

$conn = new mysqli($host, $user, $pass, $dbname);

// Periksa koneksi
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}

// Query untuk mengambil data
$query = "SELECT * FROM orders";
$result = $conn->query($query);

if (!$result) {
    die("Query gagal: " . $conn->error);
}

// Buat instance TCPDF
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);

// Set metadata PDF
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Admin');
$pdf->SetTitle('Laporan Orders');
$pdf->SetSubject('Laporan Orders');
$pdf->SetKeywords('TCPDF, PDF, laporan, orders');

// Set margin
$pdf->SetMargins(15, 15, 15);
$pdf->SetHeaderMargin(10);
$pdf->SetFooterMargin(10);

// Set header dan footer
$pdf->setPrintHeader(true);
$pdf->setPrintFooter(true);
$pdf->SetHeaderData('', 0, 'Laporan Orders', 'Dibuat pada ' . date('Y-m-d'));

// Set font
$pdf->SetFont('helvetica', '', 12);

// Tambahkan halaman
$pdf->AddPage();

// Konten tabel dalam HTML
$html = '<h1>Laporan Orders</h1>';
$html .= '<table border="1" cellpadding="5" cellspacing="0">
            <thead>
                <tr style="background-color:#f2f2f2;">
                    <th>ID</th>
                    <th>Nama Pelanggan</th>
                    <th>Nama Produk</th>
                    <th>Kuantitas</th>
                    <th>Harga</th>
                </tr>
            </thead>
            <tbody>';

// Masukkan data dari database ke tabel
while ($row = $result->fetch_assoc()) {
    $html .= '<tr>
                <td>' . $row['id'] . '</td>
                <td>' . $row['customer_name'] . '</td>
                <td>' . $row['product_name'] . '</td>
                <td>' . $row['quantity'] . '</td>
                <td>' . number_format($row['price'], 2) . '</td>
              </tr>';
}

$html .= '</tbody></table>';

// Tulis konten HTML ke PDF
$pdf->writeHTML($html, true, false, true, false, '');

// Output file PDF
$pdf->Output('laporan_orders.pdf', 'I'); // 'I' untuk tampil di browser, 'D' untuk unduh langsung

// Tutup koneksi
$conn->close();
?>

4. Penjelasan Kode

  1. Koneksi ke Database:
    • mysqli digunakan untuk menghubungkan aplikasi ke MySQL.
    • Ganti localhost, root, dan dbname sesuai pengaturan Anda.
  2. Mengambil Data dari Database:
    • Query SQL untuk mendapatkan semua data dari tabel orders.
  3. Membuat PDF:
    • Gunakan metode writeHTML() untuk memasukkan tabel HTML ke PDF.
    • Tambahkan header, footer, dan metadata untuk personalisasi.
  4. Output:
    • Output('laporan_orders.pdf', 'I'): Menampilkan file PDF di browser.
    • Output('laporan_orders.pdf', 'D'): Mengunduh file PDF.

5. Output

  • Akses file index.php melalui browser.
  • PDF akan menampilkan laporan data dari tabel orders dalam bentuk tabel.
tcpdf dengan database

Pengembangan Selanjutnya

  1. Tambahkan Gaya: Perindah tampilan tabel dengan CSS inline di HTML.
  2. Filter Data: Tambahkan fitur filter berdasarkan tanggal atau kategori tertentu.
  3. QR Code atau Barcode: Gunakan pustaka tambahan seperti TCPDF QR Code untuk menambahkan elemen QR code.

Jika ada pertanyaan lebih lanjut atau ingin menambahkan fitur tertentu, beri tahu saya! 😊

Leave a Reply

Your email address will not be published. Required fields are marked *