Dalam era digital, laporan dan dokumen transaksi tidak lagi dicetak di atas kertas, melainkan dikirimkan dalam format yang seragam, mudah dibaca, dan aman, yaitu PDF (Portable Document Format). Bagi para pengembang web, khususnya yang menggunakan framework populer seperti CodeIgniter 3, tantangan utamanya adalah bagaimana mengonversi tampilan halaman HTML/CSS yang sudah dibuat menjadi dokumen PDF yang rapi dan profesional.

Di sinilah peran DOMPDF menjadi sangat krusial. Dalam artikel ini, kita akan mengupas tuntas apa itu DOMPDF, memahami fungsi intinya, dan memberikan panduan langkah demi langkah cara setting serta menggunakannya dalam proyek CodeIgniter 3 Anda.

Apa Itu DOMPDF?

DOMPDF adalah library PHP open source yang berfungsi sebagai mesin konversi. Secara sederhana, DOMPDF menerima masukan berupa kode HTML dan CSS (yang Anda gunakan untuk membuat tampilan web) dan menguraikannya (parsing) untuk menghasilkan dokumen PDF.

Nama DOMPDF sendiri berasal dari kombinasi Document Object Model (cara browser menyusun elemen HTML) dan PDF. Karena dibangun menggunakan PHP murni, DOMPDF sangat mudah diintegrasikan dengan framework PHP apa pun, termasuk CodeIgniter 3, menjadikannya solusi favorit untuk pembuatan invoice, kuitansi, atau laporan multi-halaman.

Fungsi Utama DOMPDF

Fleksibilitas DOMPDF menjadikannya lebih dari sekadar alat konversi sederhana. Ada beberapa fungsi inti yang membuatnya unggul:

Konversi HTML ke PDF yang Fleksibel

Fungsi utama dan terpenting adalah kemampuan untuk mengubah view HTML standar menjadi PDF. Ini berarti Anda tidak perlu mempelajari sintaks baru untuk membuat laporan; cukup desain laporan Anda menggunakan HTML dan CSS yang sudah Anda kuasai.

Baca Juga:   Django vs Flask: Perbandingan Framework Python Terbaik untuk Proyek Web Anda

Dukungan CSS dan Styling

DOMPDF menawarkan dukungan yang solid untuk CSS, meskipun terbatas pada standar CSS 2.1 dan beberapa fitur CSS 3. Ini memungkinkan Anda untuk mengatur tata letak, warna, margin, dan styling tabel agar dokumen PDF terlihat persis seperti yang Anda harapkan. Tips terpenting adalah menggunakan CSS inline atau menempatkan kode CSS di dalam tag <style> pada halaman HTML agar DOMPDF dapat membacanya dengan benar.

Penanganan Gambar dan Font Kustom

DOMPDF mampu menyematkan gambar (inline atau eksternal) ke dalam dokumen PDF Anda. Selain itu, DOMPDF juga mendukung penggunaan custom font (seperti TTF atau OTF). Ini penting untuk branding atau jika Anda ingin menggunakan font non-standar (misalnya, font yang mendukung karakter bahasa Indonesia secara lengkap).

Pengaturan Output Dokumen

Anda dapat sepenuhnya mengontrol bagaimana PDF disajikan. Anda bisa menentukan ukuran kertas (A4, Letter, Legal, dsb.) dan orientasi (Portrait atau Landscape) melalui pengaturan konfigurasi sebelum proses rendering dilakukan. Anda juga dapat memilih apakah file tersebut harus langsung ditampilkan di browser (stream) atau diunduh otomatis (download).

Persiapan Lingkungan CodeIgniter 3

Sebelum melangkah ke instalasi, pastikan proyek CodeIgniter 3 Anda sudah berjalan dengan baik. DOMPDF modern membutuhkan versi PHP yang cukup baru (disarankan PHP 7.x ke atas) untuk performa dan keamanan terbaik, meskipun CI3 sendiri masih mendukung versi PHP yang lebih lama.

Cara Setting dan Instalasi DOMPDF di CodeIgniter 3

Karena CodeIgniter 3 tidak secara bawaan mendukung composer untuk autoloading library (walaupun bisa diintegrasikan), kita akan menggunakan metode manual yang paling umum dan rapi, yaitu dengan Library Wrapper.

Download dan Penempatan File

  1. Unduh DOMPDF: Kunjungi repositori GitHub DOMPDF (atau halaman rilis resminya) dan unduh versi stabil terbaru (biasanya berupa file ZIP).
  2. Struktur Folder: Dalam struktur folder CodeIgniter Anda, buatlah direktori berikut:
Baca Juga:   Mengapa Penting Mengetahui Cara Kerja Server?

application/third_party/dompdf/

  1. Ekstraksi: Ekstrak semua isi dari file ZIP DOMPDF yang Anda unduh ke dalam folder application/third_party/dompdf/. Anda akan melihat file seperti autoload.inc.php dan folder lib/ serta src/ berada di dalam folder dompdf.

Catatan: Penempatan di application/third_party/ adalah praktik terbaik untuk memisahkan kode pihak ketiga dari kode inti aplikasi CI3 Anda.

Membuat Library Wrapper (Pdf.php)

CodeIgniter 3 menggunakan skema penamaan file yang spesifik untuk meload library. Kita akan membuat file wrapper yang bertugas memanggil dan menginisialisasi DOMPDF. Buat file baru bernama Pdf.php di direktori application/libraries/. File ini berfungsi sebagai jembatan antara sistem CI3 dengan library DOMPDF.

<?php if ( ! defined(‘BASEPATH’)) exit(‘No direct script access allowed’);

// Pdf.php in application/libraries/

require_once(APPPATH.’third_party/dompdf/autoload.inc.php’);

use Dompdf\Dompdf;

use Dompdf\Options;

class Pdf extends Dompdf {

    // Constructor

    public function __construct(){

        parent::__construct();

    }

    // Fungsi untuk merender HTML ke PDF

    public function createPDF($html, $filename=”, $stream=TRUE, $paper=’A4′, $orientation=’portrait’) {

        $options = new Options();

        // Aktifkan remote asset (penting jika menggunakan gambar dari URL atau font eksternal)

        $options->set(‘isRemoteEnabled’, TRUE); 

        $this->setOptions($options);

        // Load HTML content

        $this->loadHtml($html);

        // Set ukuran dan orientasi kertas

        $this->setPaper($paper, $orientation);

        // Render HTML sebagai PDF

        $this->render();

        // Output ke browser

        if ($stream) {

            $this->stream($filename.”.pdf”, array(“Attachment” => 0)); // 0 = Stream (tampil), 1 = Download

        } else {

            return $this->output();

        }

    }

}

/* End of file Pdf.php */

Tips Mengatasi Masalah Umum (Troubleshooting)

Gambar Tidak Muncul (Broken Image)

Penyebabnya DOMPDF tidak tahu cara menemukan gambar jika Anda menggunakan path relatif (assets/img/logo.png). Ia memerlukan alamat yang sepenuhnya jelas. Solusinya, Pastikan isRemoteEnabled TRU, Cek kembali di Pdf.php Anda, pastikan opsi ini diaktifkan, karena ini mengizinkan DOMPDF mengambil aset dari URL. Gunakan Base URL. Selalu gunakan path absolut (URL lengkap) untuk gambar, bukan path relatif. Di CodeIgniter 3, Anda dapat melakukannya di View Anda. Atau jika aplikasi Anda berjalan di HTTPS, pastikan semua URL aset (termasuk gambar) juga menggunakan HTTPS, atau DOMPDF akan memblokir akses karena alasan keamanan.

Baca Juga:   5 Praktik Terbaik untuk Mencegah Akses Tidak Sah dan Kebocoran Data

Font Kustom Tidak Tampil

Font yang Anda gunakan di CSS tidak tersedia di lingkungan server DOMPDF, atau DOMPDF belum memproses font tersebut ke format yang dapat dibaca PDF. Solusinya, Jika Anda menggunakan custom font (TTF/OTF), Anda harus mengonversinya menggunakan utilitas DOMPDF dan memastikan file font tersedia dan di-embed ke dalam PDF. Gunakan Font Aman: Untuk menghindari masalah, gunakan font-font standar web yang secara otomatis didukung, seperti sans-serif (Helvetica, Arial) atau serif (Times New Roman).

Memory Limit dan Timeout

Laporan PDF yang panjang (ratusan baris) atau memiliki banyak gambar beresolusi tinggi membutuhkan memori dan waktu pemrosesan yang sangat besar. Solusinya, anda bisa menambahkan kode ini_set(‘memory_limit’, ‘256M’); // Naikkan hingga 512M jika perlu diawal fungsi controller anda. Atau jika proses render terlalu lama dan menyebabkan timeout, naikkan batas waktu eksekusi set_time_limit(300); // 300 detik atau 5 menit.

Kesimpulan

DOMPDF adalah alat yang sangat powerful dan fleksibel, memungkinkan Anda menghasilkan dokumen PDF berkualitas tinggi dari sintaks HTML/CSS yang sudah Anda kenal. Dengan integrasi melalui wrapper library di CodeIgniter 3, proses pembuatan laporan digital menjadi efisien dan cepat.

Namun, kemampuan aplikasi Anda untuk menghasilkan dan menyajikan PDF dengan cepat tidak hanya bergantung pada library yang Anda gunakan, tetapi juga pada infrastruktur hosting yang kuat. Jika Anda sedang mencari layanan hosting berkinerja tinggi, stabil, dan dikelola dengan baik untuk menjalankan aplikasi CodeIgniter 3 Anda, jangan ragu untuk mempertimbangkan solusi yang ditawarkan oleh Nevacloud. Dengan server yang dioptimalkan, loading laporan Anda akan secepat konversinya!

Avatar for Hiqbal Fauzi

About Author

Hiqbal Fauzi

As SEO Specialist at Deneva with a bachelor's in animal husbandry, passionate about digital marketing, especially in SEO.