Laporan PDF dengan CodeIgniter dan TCPDF

10 October 2017 | Tags: , , , , ,


Laporan dalam bentuk PDF sudah menjadi semacam kewajiban dalam membuat sebuah aplikasi. Ada banyak library  PHP yang tersedia untuk membuat laporan PDF, salah satunya adalah TCPDF. Bagusnya lagi kita bisa membuat laporan PDF dengan tag HTML. Kali ini saya akan membahas cara membuat laporan PDF sederhana, dan laporan PDF dimana data diambil dari table MySQL.

Tutorial ini saya buat berdasarkan artikel TCPDF Integration pada alamat: https://github.com/bcit-ci/CodeIgniter/wiki/TCPDF-Integration.

Langkah-langkah membuat Laporan PDF dengan CodeIgniter dan TCPDF

  1. Download library TCPDF dari situs https://tcpdf.org/
  2. Ekstrak semua file dan taruh di folder libraries, sehingga struktur filenya adalah sebagai berikut:
    Struktur folder Libraris pada Laporan PDF dengan CodeIgniter dan TCPDF
  3. Buat file Pdf.php di folder libraries (application/libraries/Pdf.php)
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    require_once dirname(__FILE__) . '/tcpdf/tcpdf.php';
    class Pdf extends TCPDF
    {
        function __construct()
        {
            parent::__construct();
        }
    }
    /* End of file Pdf.php */
    /* Location: ./application/libraries/Pdf.php */
               
  4. Buat Controller Laporan (controllers/Laporan.php)
    <?php 
    if (!defined('BASEPATH')) exit('No direct script access allowed');
    
    class Laporan extends CI_Controller {
    	public function __construct()
    		{	
    			parent::__construct();
    			$this->load->library('Pdf');
    		}
    	public function contoh()
    		{
    			$this->load->view('contoh', $data);
    		}
    }
    
  5. Buat View contoh (views/contoh.php) untuk menampilkan Laporan PDF
    <?php
    	$pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
    	$pdf->SetTitle('Contoh');
    	$pdf->SetTopMargin(20);
    	$pdf->setFooterMargin(20);
    	$pdf->SetAutoPageBreak(true);
    	$pdf->SetAuthor('Author');
    	$pdf->SetDisplayMode('real', 'default');
    	$pdf->AddPage();
    	$pdf->Write(5, 'Contoh Laporan PDF dengan CodeIgniter + tcpdf');
    	$pdf->Output('contoh1.pdf', 'I');
    ?>
    
  6. Kemudian buka browser dan ketikkan alamat: http://localhost/ci316/laporan/contoh, jika dilayar anda muncul gambar dibawah ini, berarti kita sudah berhasil mengintegrasikan TCPDF dalam CodeIgniter
    Contoh tampilan Laporan PDF dengan CodeIgniter dan TCPDF

Membuat Laporan PDF dari table MySQL

Setelah berhasil membuat laporan PDF sederhana diatas, selanjutnya adalah membuat laporan PDF, dimana datanya diambil dari tabel pada MySQL. Adapun langkah-langkahnya adalah sebagai berikut:

  1. Buat database ci316 (boleh dengan nama berbeda)
  2. Buat table tbl_produk dan buat beberapa contoh baris. (untuk menyimpan data produk)
    CREATE TABLE tbl_produk (
      id_produk int(10) unsigned NOT NULL AUTO_INCREMENT,
      nama_produk varchar(50) DEFAULT NULL,
      deskripsi_produk varchar(50) DEFAULT NULL,
      harga_produk int(10) DEFAULT NULL,
      PRIMARY KEY (id_produk)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1;
    
    /*Data for the table tbl_produk */
    
    insert  into tbl_produk(id_produk,nama_produk,deskripsi_produk,harga_produk) values (1,'Produk A','Deskripsi Produk A',1000),(2,'Produk B','Deskripsi Produk B',2000),(3,'Produk C','Deskripsi Produk C',3000);
    
  3. Ubah konfigurasi databases (config/database.php)
    $db['default'] = array(
    	'dsn'	=> '',
    	'hostname' => 'localhost',
    	'username' => 'root',
    	'password' => 'info',
    	'database' => 'ci316',
    	'dbdriver' => 'mysqli',
    	'dbprefix' => '',
    	'pconnect' => FALSE,
    	'db_debug' => (ENVIRONMENT !== 'production'),
    	'cache_on' => FALSE,
    	'cachedir' => '',
    	'char_set' => 'utf8',
    	'dbcollat' => 'utf8_general_ci',
    	'swap_pre' => '',
    	'encrypt' => FALSE,
    	'compress' => FALSE,
    	'stricton' => FALSE,
    	'failover' => array(),
    	'save_queries' => TRUE
    );
    
  4. Buat model Produk_model (models/Produk_model.php)
    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
    
    class Produk_model extends CI_Model {
    
    	public function get_produk()
    	{
    		$query = $this->db->get('tbl_produk');
    		return $query->result_array();
    	}
    }
    ?>
    
  5. Ubah Controller Laporan yang sudah kita buat sebelumnya (controllers/Laporan.php) menjadi:
    <?php 
    if (!defined('BASEPATH')) exit('No direct script access allowed');
    
    class Laporan extends CI_Controller {
    	public function __construct()
    		{	
    			parent::__construct();
    			$this->load->library('Pdf');
    			$this->load->model('produk_model');
    		}
    	public function contoh()
    		{
    			$this->load->view('contoh', $data);
    		}
    	public function cetak_produk()
    		{
    			$data['produk'] = $this->produk_model->get_produk();
    			$this->load->view('cetak_produk', $data);
    	}	
    }
    
  6. Buat View cetak_produk (views/cetak_produk.php) untuk menampilkan data produk dalam Laporan PDF
    <?php
    			$pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
    			$pdf->SetTitle('Daftar Produk');
    			$pdf->SetHeaderMargin(30);
    			$pdf->SetTopMargin(20);
    			$pdf->setFooterMargin(20);
    			$pdf->SetAutoPageBreak(true);
    			$pdf->SetAuthor('Author');
    			$pdf->SetDisplayMode('real', 'default');
    			$pdf->AddPage();
    			$i=0;
    			$html='<h3>Daftar Produk</h3>
    					<table cellspacing="1" bgcolor="#666666" cellpadding="2">
    						<tr bgcolor="#ffffff">
    							<th width="5%" align="center">No</th>
    							<th width="35%" align="center">Nama Produk</th>
    							<th width="45%" align="center">Deskripsi</th>
    							<th width="15%" align="center">Harga</th>
    						</tr>';
    			foreach ($produk as $row) 
    				{
    					$i++;
    					$html.='<tr bgcolor="#ffffff">
    							<td align="center">'.$i.'</td>
    							<td>'.$row['nama_produk'].'</td>
    							<td>'.$row['deskripsi_produk'].'</td>
    							<td align="right">'.number_format($row['harga_produk'],0,",",",").'</td>
    						</tr>';
    				}
    			$html.='</table>';
    			$pdf->writeHTML($html, true, false, true, false, '');
    			$pdf->Output('daftar_produk.pdf', 'I');
    ?>
    
  7. Buka browser dan ketikkan alamat: http://localhost/ci316/laporan/cetak_produk, maka jika tidak ada hambatan atau aral melintang, yang tampak di layar anda seharusnya:
    Menampilkan database pada Laporan PDF dengan CodeIgniter dan TCPDF

Tidak terlalu susah bukan?

Selanjutnya anda bisa membuat laporan sesuai dengan kebutuhan yang diinginkan.

Download Laporan PDF dengan CodeIgniter dan TCPDF

Klik tombol Facebook / Twitter / Google + untuk Download


Komentar via Facebook tentang Laporan PDF dengan CodeIgniter dan TCPDF

Komentar tentang Laporan PDF dengan CodeIgniter dan TCPDF

  • kak mohon bantuannya, ada error
    Type: Error

    Message: Cannot use object of type stdClass as array

    Filename: C:\xampp\htdocs\pendaftar_ci\application\views\admin\laporan\cetak_produk.php

  • kak ada error mohon bantuannya
    Type: Error

    Message: Cannot use object of type stdClass as array

    Filename: C:\xampp\htdocs\pendaftar_ci\application\views\admin\laporan\cetak_produk.php

  • Message: require_once(/home2/application/libraries/tcpdf/tcpdf.php): failed to open stream: No such file or directory
    kenapa pas dihosting error yah ? bagian ini require_once dirname(__FILE__) . ‘/tcpdf/tcpdf.php’;

  • Silahkan tulis saran, komentar dan pertanyaan dibawah!

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