[Tutorial] membuat Report PDF mudah dalam PHP dan Framework Codeigniter

Salah satu permintaan client dalam pembuatan sebuah aplikasi adalah report dalam bentuk pdf, banyak sekali library pdf yang dapat kita gunakan untuk mencapai hasil report pdf, contoh library yg umum adalah : fpdf, dompdf, jspdf, mpdf, dll .

Saya sangat tertarik dengan mpdf karena kemudahan dan report pdf yang di hasilkan, di dalam library mpdf kita dapat menconvert secara langsung file output(keluaran) baik itu bentuk html maupun php ke dalam format pdf tanpa harus banyak merubah konfigurasi/setting dari library mdpf.

Ok pertama-tama siapkan alat perang terlebih dahulu :

  1. editor PHP (bisa menggunakan sublime, notepad++, dll, tetapi saya lebih nyaman menggunakan netbean php)
  2. Project PHP yang sudah menghasilkan output (view) dalam hal ini saya coba menggunakan project berbasis Codeigniter
  3. Library mpdf link download mdpf
  4. saya menggunakan bootstrap untuk memperindah tampilan dari report nya .(bootstrap nya googling aja kalo belum ada  pasti nemu lah :-p )

copykan folder mpdf yang sudah di extract ke folder thirdparty dalam project codeigniter kita seperti terlihat di gambar berikut :

Kazam_screenshot_00002

membuat file m_pdf.php di folder libraries untuk meload library mpdf yang ada di thirdparty, seperti terlihat di gambar :

Kazam_screenshot_00003

Berikut kode program dari librari m_pdf.php yang ada di libraries :

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class m_pdf {
    
    function m_pdf()
    {
        $CI = & get_instance();
        log_message('Debug', 'mPDF class is loaded.');
    }
 
    function load($param=NULL)
    {
        include_once APPPATH.'/third_party/mpdf60/mpdf.php';
         
        if ($params == NULL)
        {
            $param = '"en-GB-x","A4","","",10,10,10,10,6,3';          
        }
         
        return new mPDF($param);
    }
}

step selanjutnya adalah menyiapkan model yang akan kita gunakan untuk mengambil data dari database untuk membuat report pdf berikut kode fungsi yang ada di model web_app_model.php kode program nya :

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Web_App_Model extends CI_Model {

    //query otomatis dengan active record
    public function getAllData($table) {
        return $this->db->get($table);
    }


setelah model ready kita coba buat file controller contoh menggunakan database dengan struktur database sebagai berikut:

Kazam_screenshot_00006

data dari table siswa tampak seperti gambar di bawah ini :

Kazam_screenshot_00007

oke kita lanjut menuju controller saya membuat controller sederhana agar dapat menampilkan data dari tabel siswa tersebut berikut kode programnya :

/**
 * Description of pdfreport
 *
 * @author puguhrismadi
 */
class pdfreport extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->library('m_pdf');
        $this->load->model('web_app_model');
    }

    function cetakpdf() {
        $table="siswa";
        $data['data_tbsiswa']=$this->web_app_model->getAllData($table);
        
        $this->load->view('viewsiswapdf',$data);
    }

}

tapi belum selesai ya controller di atas 🙂 kita lanjutkan controller itu setelah membuat view, berikut view yang saya buat di dalam subfoler admin dengan nama viewsiswapdf.php

  

<link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!--Import materialize.css-->
<link href="<?php echo base_url(); ?>assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>

<div class="box-body mdl-cell--12-col">

    <h3 class="mdl-cell mdl-cell--12-col">Data Siswa SMK Taruna Bhakti </h3>
   
    <div class="mdl-cell--12-col panel panel-default ">
        <div class="panel-body">
         
            <table width="85%"  class="table table-condensed" >
                <thead>

                    <tr>   
                        <th data-field="name">ID Siswa</th>
                        <th data-field="name">No Ujian</th>
                        <th data-field="name">Nama</th>
                        <th data-field="name">Nis</th>
                        <th data-field="name">JKL</th>
                        <th data-field="name">TTL</th>                   
                      
                    </tr>    
                </thead>
                <tbody>

                    <?php
                    foreach ($data_tbsiswa->result() as $dt) {
                        ?>
                        <tr><td><?php echo $dt->idsiswa; ?></td>
                            <td><?php echo $dt->noujian; ?></td>
                            <td><?php echo $dt->nama; ?></td>
                            <td><?php echo $dt->nis; ?></td>
                            <td><?php echo $dt->JKL; ?></td>
                            <td><?php echo $dt->TTL; ?></td>                          
                                                   
                           
                        </tr>

                    <?php } ?> 
                </tbody>
            </table>
        </div></div>
</div>  

<div class="box-footer clearfix">
    <?php //echo $jum_penguji;  ?>
</div>
</div>    

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="<?php echo base_url(); ?>assets/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
</body>

berikut adalah tampilan output dari http://localhost/simpukk/index.php/pdfreport/cetakpdf

contohdatasiswa

maaf karena datanya terlalu panjang jadi gambarnya saja yg di crop he..he..

gambar di atas adalah tampilan data menggunakan pemanis css dari bootstrap .

nah sekarang saatnya untuk merubah dari html (php) ke format pdf , kita rubah kembali file controller yg sudah kita buat sebelumnya kita tambahkan beberapa kode tambahan cek kode berikut  :

function cetakpdf() {
        $table = "siswa";
        $data['data_tbsiswa'] = $this->web_app_model->getAllData($table);

        $this->load->view('viewsiswapdf', $data);
        $sumber = $this->load->view('viewsiswapdf', $data, TRUE);
        $html = $sumber;


        $pdfFilePath = "hasilreport.pdf";
        //lokasi file css yang akan di load
        $css = $this->load->view('admin/css/bootstrap.min.css');
        $stylesheet = file_get_contents($css);

        $pdf = $this->m_pdf->load();

        $pdf->AddPage('L');
        $pdf->WriteHTML($stylesheet, 1);
        $pdf->WriteHTML($html);
        
        $pdf->Output($pdfFilePath, "D");
        exit();
    }

nah selesai kita cek di url yang sama pada controller sebelumnya : localhost/simpukk/index.php/pdfreport/cetakpdf

Kazam_screenshot_00008

Kazam_screenshot_00009

nah sekian tutorial report pddf PHP codeigniter dan mpdf dari saya, semoga bermanfaat dan silahkan berkreasi.

 

12938217_1012453972136814_721287018233549514_n

 

[sgmb id=”1″]