Laporan PDF dengan CodeIgniter dan TCPDF
10 October 2017 | Tags: Laporan PDF, Laporan PDF dengan CodeIgniter, Laporan PDF dengan CodeIgniter dan TCPDF, Laporan PDF dengan PHP dan TCPDF, Laporan PDF dengan TCPDF, Membuat Laporan PDF PHP
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
- Download library TCPDF dari situs https://tcpdf.org/
- Ekstrak semua file dan taruh di folder libraries, sehingga struktur filenya adalah sebagai berikut:
- 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 */
- 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); } }
- 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'); ?>
- 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
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:
- Buat database ci316 (boleh dengan nama berbeda)
- 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);
- 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 );
- 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(); } } ?>
- 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); } }
- 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'); ?>
- 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:
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 tentang Laporan PDF dengan CodeIgniter dan TCPDF
gimana caranya ngasave pdf otomatis ?
min mau nanya kalau menampilkan gambar dari database dalam tcpdf gmn?
Prinsipnya sama dengan menampilkan gambar pada html.
/path_gambar” />
gimana cara pake bootstrap di tcpdf
coba taruh link bootstrap pada bagian html nya
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
Cek penamaan file-nya
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
Coba download yang tersedia di artikel. Atau cek di artikel berikut:
https://stackoverflow.com/questions/30704326/cannot-use-object-of-type-stdclass-as-array
coba di bagian untuk manggil datanya ubah dari $row[‘nama_produk’] jadi $row->nama_produk;
lancar trims
Sama2
Terimakasih ilmunya, sangat bermanfaat
Sama-sama.
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’;
path tcpdf-nya tidak ditemukan. Coba cek naruh libary tcpdf-nya.