Kontak Me

Blog Vitals

Blog Stats
Google Page Rank
1,580,245
48
123
4

Bikin Laporan PDF dengan CodeIgniter

Sering kali kita dihadapkan pada waktu membuat aplikasi, kita cukup sering dipusingkan oleh masalah pembuatan laporan. Kenapa pusing karena, satu terkadang bentuk dan formatnya harus sesuai permintaan user yang sering aneh2, dan gak standar meskipun secara teknis itu bisa – bisa saja. Dua, pengaturan dan pembuatan informasi yang akan dijadikan laporan terkadang cukup susah, karena bisa-bisa melakukan query kesana kemari.(hiks.. aku pernah gitu, untungnya tahu kalo ada table yang nampung hasil query ’soal cerita’ itu ).

Berikut ini aku tuliskan cara membikin laporan dalam format PDF, dengan R&OS library yang terintegrasi dengan CodeIgniter 1.6.3. Kenapa R&OS library yang dipakae, kenapa bukan FPDF atau dompdf, karena R&OS ini sudah memiliki fungsi cukup lengkap, antara lain ada header footer, set margin, page number, set ukuran halaman, dsb. Dan kenapa juga pake CodeIgniter (CI) karena ini merupakan framework PHP yang cukup lengkap, kecil, mudah dimodifikasi dan mudah di integrasi kan dengan library lain.

Di akhir post ini saya attach satu file zip yang berisi kode dari tutorial ini berikut dengan R&OS library. Library ini terdiri dari 2 file, class.ezpdf.php dan class.pdf.php dan diletakan di folder application/library, dan juga library ini memerlukan file-file font untuk bisa berfungsi baik, dan ditempatkan dalam satu folder bernama fonts yang diletakan di root folder file zip ini.

Sebelumnya file class.ezpdf.php saya ubah jadi cezpdf.php agar lebih mudah. Lalu lakukan modifikasi pada statement include di baris 3 menjadi seperti :

include_once(APPPATH.'libraries/class.pdf.php');

Hal ini mencegah PHP tidak bisa menemukan file yang di include, setelah modifikasi selesai, library ini siap digunakan dengan CI.

Pertama mari kita buat fungsi sederhana dulu, fungsi hello_world() di class Tutorial di file tutorial.php di dalam folder controllers.

Hello World

 function hello_world()
{
$this->load->library('cezpdf');

$this->cezpdf->ezText('Hello World', 12, array('justification' => 'center'));
$this->cezpdf->ezSetDy(-10);

$content = 'The quick, brown fox jumps over a lazy dog. DJs flock by when MTV ax quiz prog.
Junk MTV quiz graced by fox whelps. Bawds jog, flick quartz, vex nymphs.';

$this->cezpdf->ezText($content, 10);

$this->cezpdf->ezStream();
}

Kode diatas menghasilkan PDF seperti ini. Kita lihat pertama kali kita lakukan adalah memanggil library untuk digunakan. Fungsi ezText() digunakan untuk membuat judul dokumen. Parameter yang dibutuhkan adalah pertama, string yang akan ditulis, kedua, ukuran text judul, ketiga, adalah array opsi konfigurasi. Setelah judul kita masukan jarak tulisan dengan fungsi ezSetDy(). Setelah itu kita masukan konten tulisan dengan fungsi ezText(). barulah kita gunakan fungsi ezStream() yang akan membuat dokumen dan memunculkan dialog untuk membuka/mendownload dokumen PDF yang sudah di buat.

Membuat Data Tabular.

Ketika berurusan dengan laporan bisnis, adalah baik jika kamu menampilkannya dalam bentuk tabel. Terkadang susah membuat data tabel di PDF namun disini aku coba tuliskan contoh fungsi yang mudah dalam membuat tabel dari variable array.

function tables()
{
$this->load->library('cezpdf');

$db_data[] = array('name' => 'Jon Doe', 'phone' => '111-222-3333', 'email' => 'jdoe@someplace.com');
$db_data[] = array('name' => 'Jane Doe', 'phone' => '222-333-4444', 'email' => 'jane.doe@something.com');
$db_data[] = array('name' => 'Jon Smith', 'phone' => '333-444-5555', 'email' => 'deka@someplacepsecial.com');

$col_names = array(
'name' => 'Name',
'phone' => 'Phone Number',
'email' => 'E-mail Address'
);

$this->cezpdf->ezTable($db_data, $col_names, 'Contact List', array('width'=>550));
$this->cezpdf->ezStream();
}

Kode diatas akan menghasilkan PDF seperti ini. Di kode tersebut saya buat array dengan nama $db_data. Aku buat ini seperti layaknya jika kamu ambil data dari database, jadinya variable array. Dibawahnya saya juga buat array $col_names yang berisi nama field yang terkait dengan data tadi. Variable $col_names ini nantinya akan digunakan sebagai nama field dalam table yang akan dibuat.

Setelah ada variable array untuk data dan nama kolom, kita bisa buat table di PDF dengan memanggil fungsi ezTable(). Di fungsi ini akan mengambil array data , array nama kolom yang terkait, nama table, dan array opsi konfigurasi. Sebenarnya ada beberapa macam opsi konfigurasi yang bisa diset, namun tidak saya tulis disini.

Header and Footer

Kebanyakan laporan di korporat berisi dengan standar header atau footer atau dua – duanya. Itu bisa berisi tanggal/waktu dokumen dibuat, user yang membuat, nomor halaman dan lain2. Dalam R&OS library akan sedikit rumit dalam menambahkan header atau footer, karena akan banyak baris kode untuk membuatnya, oleh karena itu proses membuat header footer dijadikan dalam satu fungsi di bagian helper CI. Sehinga kamu hanya mem-load helpernya dan memanggil nama fungsinya dimanapun kamu butuh menambahkan header footer di PDF.


function prep_pdf($orientation = 'portrait')
{
$CI = & get_instance();

$CI->cezpdf->selectFont(base_url() . '/fonts');

$all = $CI->cezpdf->openObject();
$CI->cezpdf->saveState();
$CI->cezpdf->setStrokeColor(0,0,0,1);
if($orientation == 'portrait') {
$CI->cezpdf->ezSetMargins(50,70,50,50);
$CI->cezpdf->ezStartPageNumbers(500,28,8,'','{PAGENUM}',1);
$CI->cezpdf->line(20,40,578,40);
$CI->cezpdf->addText(50,32,8,'Printed on ' . date('m/d/Y h:i:s a'));
$CI->cezpdf->addText(50,22,8,'CI PDF Tutorial - http://www.google.com');
}
else {
$CI->cezpdf->ezStartPageNumbers(750,28,8,'','{PAGENUM}',1);
$CI->cezpdf->line(20,40,800,40);
$CI->cezpdf->addText(50,32,8,'Printed on '.date('m/d/Y h:i:s a'));
$CI->cezpdf->addText(50,22,8,'CI PDF Tutorial - http://www.google.com');
}
$CI->cezpdf->restoreState();
$CI->cezpdf->closeObject();
$CI->cezpdf->addObject($all,'all');
}

Fungsi diatas fungsi untuk membuat footer di dokumen PDF. Kode diatas bila dipanggil dalam fungsi membuat halaman PDF maka menghasilkan PDF  seperti ini . Pada fungsi diatas, ada fungsi prep_pdf() yang terletak di file pdf_helper.php dalam folder application/helpers. Yang harus dilakukan adalah hanya load helper di controller dan memanggil fungsi yang ada didalamnya.

Format laporan juga bisa landscape selain potrait, jadi di dalam fungsi prep_pdf() sudah ada pilihan untuk itu. Aku tidak akan panjang lebar dalam post kali ini karena bisa dilanjutkan dalam post yang lain. Namun di dalam fungsi2 diatas sudah ada perintah2 untuk memodifikasi PDF yang akan kamu buat, seperti ezStartPageNumbers() , line() dan ezStream() untuk generate dokumen akhir. Jadi kamu bisa membuat laporan sesuai keinginan kamu.

Silahkan mencoba.!
Download : Tutorial Bikin PDF di CI

Wassalam

29 comments to Bikin Laporan PDF dengan CodeIgniter

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>