Membuat Laporan PDF dengan Dompdf pada CodeIgniter 4 composer

Membuat Laporan PDF dengan Dompdf pada CodeIgniter 4 composer
21 November 2022 09:09 Fauzan (Codekop) 1,245x

Halo, kembali lagi ditutorial codekop, sudah lama saya gak update, kali ini saya ingin berbagi pengalaman yaitu cara menggunakan dompdf di CodeIgniter 4 lewat composer, mungkin sudah banyak yang bahas ya, cuma saya lagi mau tulis lagi untuk sebagai dokumentasi pribadi dan semoga bermanfaat juga untuk para pembaca.

Kenapa saya menggunakan dompdf ? karena waktu saya dapat project, saya menggunakan library dompdf itu kepada file project saya, yang berguna dan membantu kita dalam membuat report atau laporan sistem dengan pdf, dan terlebih lagi mudah untuk di integrasikan dari html css ke pdf karena dompdf dapat dibuat menggunakan html, dan oke langsung saja kita eksekusi.

Pertama kita siapkan file CodeIgniter versi 4

Kita download file codeigniter 4 disini https://www.codeigniter.com/download lalu extract file tersebut, bisa di xampp, atau difolder project kamu, karena CodeIgniter versi 4 hanya memerlukan php yang sudah terinstall dan composer di sistem operasi kamu 

Atau bisa juga lewat composer untuk installasi CodeIgniter 4

composer create-project codeigniter4/appstarter ci4-dompdf

   

Install Dompdf dari Composer

setelah itu kita buka terminal bawaan dari windows atau linux yang sudah terinstall composer, atau bisa juga dari terminal vscode jika kamu pakai vscode sebagai teks editornya saya disini pakai cmd sebagai terminalnya untuk menginstall dompdf dari composer.

composer require dompdf/dompdf

   

setelah selesai menginstall dompdf dari composer langkah selanjutnya kita membuat library untuk memanggil dompdf yang ada di composer

Membuat Library Pdfgenerator.php

sekarang kita membuat library Pdfgenerator.php, untuk menjalankan dan memanggil dompdf yang terletak pada folder vendor composer, letakan script di app/Libraries/Pdfgenerator.php

<?php

namespace App\Libraries;

use Dompdf\Dompdf;
use Dompdf\Options;

class Pdfgenerator
{
    public function generate($html, $filename='', $paper = '', $orientation = '', $stream=true)
    {
        $options = new Options();
        $options->set('isRemoteEnabled', true);
        $dompdf = new Dompdf($options);
        $dompdf->loadHtml($html);
        $dompdf->setPaper($paper, $orientation);
        $dompdf->render();
        if ($stream) {
            $dompdf->stream($filename.".pdf", array("Attachment" => 0));
        } else {
            return $dompdf->output();
        }
    }
}

setelah kita membuat library untuk memanggil dompdfnya, kita akan membuat controller untuk memanggil library yang kita buat

Membuat Controller

pada langkah ini kita akan membuat controller function dengan nama view_pdf() untuk memanggil librarynya, letakan script ini pada folder app/Controllers/Home.php

<?php

namespace App\Controllers;

use App\Libraries\Pdfgenerator;

class Home extends BaseController
{
    public function index()
    {
        return view('welcome_message');
    }

    public function view_pdf()
    {
        $Pdfgenerator = new Pdfgenerator();
        // title dari pdf
        $this->data['title_pdf'] = 'Laporan Penjualan Toko Kita';

        // filename dari pdf ketika didownload
        $file_pdf = 'laporan_penjualan_toko_kita';
        // setting paper
        $paper = 'A4';
        //orientasi paper potrait / landscape
        $orientation = "portrait";

        $html = view('laporan_pdf', $this->data);

        // run dompdf
        $Pdfgenerator->generate($html, $file_pdf, $paper, $orientation);
    }
}

Setelah membuat controller, kita akan membuat file views.

Membuat Views

pada langkah ini kita akan mencoba membuat file laporan_pdf.php untuk mengisi data pdfnya dengan menggunakan html dan css, pada file views ini saya akan membuat laporan penjualan toko kita yang akan di generate ke pdf dengan dompdf, buat nama file laporan_pdf.php , Letakan script ini pada folder app/Views/laporan_pdf.php

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title><?= $title_pdf;?></title>
        <style>
            #table {
                font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
                border-collapse: collapse;
                width: 100%;
            }

            #table td, #table th {
                border: 1px solid #ddd;
                padding: 8px;
            }

            #table tr:nth-child(even){background-color: #f2f2f2;}

            #table tr:hover {background-color: #ddd;}

            #table th {
                padding-top: 10px;
                padding-bottom: 10px;
                text-align: left;
                background-color: #4CAF50;
                color: white;
            }
        </style>
    </head>
    <body>
        <div style="text-align:center">
            <h3> Laporan PDF Toko Kita</h3>
        </div>
        <table id="table">
            <thead>
                <tr>
                    <th>No.</th>
                    <th>Nama Produk</th>
                    <th>Harga Jual</th>
                    <th>Terjual</th>
                    <th>Tanggal Transaksi</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td scope="row">1</td>
                    <td>Kacang Goreng</td>
                    <td>Rp5.000,-</td>
                    <td>1</td>
                    <td>25 Oktober 2020, 17:01:03</td>
                </tr>
                <tr>
                    <td scope="row">2</td>
                    <td>Kopi Hitam</td>
                    <td>Rp5.000,-</td>
                    <td>1</td>
                    <td>25 Oktober 2020, 16:01:03</td>
                </tr>
                <tr>
                    <td scope="row">3</td>
                    <td>Gorengan Bakwan</td>
                    <td>Rp3.000,-</td>
                    <td>3</td>
                    <td>25 Oktober 2020, 15:01:02</td>
                </tr>
                <tr>
                    <td scope="row">4</td>
                    <td>Nasi uduk</td>
                    <td>Rp14.000,-</td>
                    <td>2</td>
                    <td>25 Oktober 2020, 14:04:03</td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

Membuat Routes

Pada langkah ini kita di peruntukan untuk membuat routes manual, pada CodeIgniter v4.2.10, fungsi auto routes seperti versi 3 telah disabled pengembang,  sebenarnya bisa di aktifkan kembali seperti versi 4 sebelumnya, tetapi saya lebih memilih untuk membuat routes manual seperti ini, tambahkan script dibawah ini pada file app/Config/Routes.php :

$routes->get('/view_pdf', 'Home::view_pdf');

Menjalankan Web

Untuk menjalankan web codeigniter 4 cukup buka terminal atau cmd anda lalu ketik 

php spark serve

Lalu menuju URL : http://localhost:8080/view_pdf

   

Selesai, kita sudah dapat membuat pdf dengan dompdf, sekian dulu tutorial kali ini, semoga bermanfaat, terima kasih dan salam Coding !