Cara Membuat PDF Report dengan CodeIgniter & FPDF

Lama juga gk ngupdate blog tercinta-ku :) gara-gara banyak kerjaan alias so sibuk atau apa namanya he . . .
Ada mitos beredar kalo pemrograman berbasis web itu lemah dalam urusan reporting, yang lebih unggul katanya program2 berbasis desktop karena banyak software yang bisa memudahkan dalam urusan reporting seperti crystal report dsb. Tapi mitos itu tidak berlaku buat saya banyak hal yang bisa kita lakukan untuk bikin report dalam pemrograman berbasis web, salah satunya menggenerate kedalam format PDF.

Ada banyak library yang bertebaran seperti DOMPDF, TCPDF, PDFLib, FPDF, dan lain-lain. Saya sudah mencoba DOMPDF dan TCPDF, tapi sekarang pilihan saya jatuh ke FPDF karena library ini sangat ringan sekali tetapi kemampuannya hh…sulit diungkapkan dengan kata-kata (lebe dikit boleh dong!!!). Saya pernah menggenerate data dari mysql yang nyampe diatas 100 halaman PDF dan gak ada masalah sama sekali, dulu ketika pake DOMPDF sangat berat dan sering gagal. Memang sih dari segi kemudahan, lebih mudah DOMPDF, tapi namanya mudah itu kan tergantung he . . .
kalo sudah terbiasa pasti terasa mudah. Anda bisa download library FPDF di situs resminya http://fpdf.org

Catatan : saya anggap anda paham tentang installasi CodeIgniter dan tambahkan kode $config['fonts_path']= ‘system/fonts/’; didalam file config.php

Silahkan download library FPDF disitus resminya, 
  1. kemudian extract file tersebut dan copy-kan file fpdf.php yang ada didalam folder tersebut kedalam folder CI system/library/
  2.  balik lagi kedalam folder FPDF, silahkan anda masuk kedalam folder font kemudian copy seluruh file yang ada didalamnya dan paste-kan kedalam folder CI system/fonts/
  3. Terakhir, masuk lagi kedalam folder FPDF dan copy folder makefont kedalam folder CI system/fonts. Konfigurasi FPDF di CI selesai ribet juga ya he . . .
Sekarang kita mulai coding, pertama kita buat Class Controller terlebih dahulu dengan nama Pdf_report. ketikan kode seperti berikut :

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class Pdf_report extends CI_Controller {
     
    public function index()
    {
        // Load library FPDF
        $this->load->library('fpdf');
         
        // Load Database
        $this->load->database();
         
        /* buat konstanta dengan nama FPDF_FONTPATH, kemudian kita isi value-nya
           dengan alamat penyimpanan FONTS yang sudah kita definisikan sebelumnya.
           perhatikan baris $config['fonts_path']= 'system/fonts/';
           didalam file application/config/config.php
        */           
        define('FPDF_FONTPATH',$this->config->item('fonts_path'));
         
        // Load model "karyawan_model"
        $this->load->model('karyawan_model');
         
        /* Kita akses function get_all didalam karyawan_model
           function get_all merupakan fungsi yang dibuat untuk mengambil
           seluruh data karyawan didalam database.
        */
        $data['karyawan'] = $this->karyawan_model->get_all();
         
        // Load view "pdf_report" untuk menampilkan hasilnya       
        $this->load->view('pdf_report', $data);
    }
}
 
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
Kemudian kita buat Class Model dengan nama Class Karyawan_model. Kemudian ketikan kode berikut :

 
class Karyawan_model extends CI_Model {
     
    function get_all()
    {
        return $this->db->get('tb_karyawan');      
    }    
}

/* End of file karyawan_model.php */
/* Location: ./application/models/karyawan_model.php */

  
Kemudian kita buat Class Model dengan nama Class Karyawan_model. Kemudian ketikan kode berikut :

/* setting zona waktu */
date_default_timezone_set('Asia/Jakarta');

/* konstruktor halaman pdf sbb :  
   P  = Orientasinya "Potrait"
   cm = ukuran halaman dalam satuan centimeter
   A4 = Format Halaman
   
   jika ingin mensetting sendiri format halamannya, gunakan array(width, height)
   contoh : $this->fpdf->FPDF("P","cm", array(20, 20));
*/

$this->fpdf->FPDF("P","cm","A4");

// kita set marginnya dimulai dari kiri, atas, kanan. jika tidak diset, defaultnya 1 cm
$this->fpdf->SetMargins(1,1,1);


/* AliasNbPages() merupakan fungsi untuk menampilkan total halaman
   di footer, nanti kita akan membuat page number dengan format : number page / total page
*/
$this->fpdf->AliasNbPages();

// AddPage merupakan fungsi untuk membuat halaman baru
$this->fpdf->AddPage();

// Setting Font : String Family, String Style, Font size
$this->fpdf->SetFont('Times','B',12);

/* Kita akan membuat header dari halaman pdf yang kita buat
   -------------- Header Halaman dimulai dari baris ini -----------------------------
*/
$this->fpdf->Cell(19,0.7,'SEKOLAH TINGGI ILMU KESEHATAN KUNINGAN',0,0,'C');

// fungsi Ln untuk membuat baris baru
$this->fpdf->Ln();
$this->fpdf->Cell(19,0.7,'TERAKREDITASI "B" BAN PT',0,0,'C');

$this->fpdf->Ln();
/* Setting ulang Font : String Family, String Style, Font size
   kenapa disetting ulang ???
   jika tidak disetting ulang, ukuran font akan mengikuti settingan sebelumnya.
   tetapi karena kita menginginkan settingan untuk penulisan alamatnya berbeda,
   maka kita harus mensetting ulang Font nya.
   jika diatas settingannya : helvetica, 'B', '12'
   khusus untuk penulisan alamat, kita setting : helvetica, '', 10
   yang artinya string stylenya normal / tidak Bold dan ukurannya 10
*/
$this->fpdf->SetFont('helvetica','',10);
$this->fpdf->Cell(19,0.5,'Jl. Lingkar Kadugede No. 02 Kuningan - Jawa Barat 45561 Telp : 0233-875847 Fax : 0232-875123',0,0,'C');

$this->fpdf->Ln();
$this->fpdf->Cell(19,0.5,'homepage : www.stikku.ac.id  email : info@stikku.ac.id',0,0,'C');

/* Fungsi Line untuk membuat garis */
$this->fpdf->Line(1,3.5,20,3.5);
$this->fpdf->Line(1,3.55,20,3.55);

/* -------------- Header Halaman selesai ------------------------------------------------*/

$this->fpdf->Ln(1);
$this->fpdf->SetFont('Times','B',12);
$this->fpdf->Cell(19,1,'LAPORAN DATA KARYAWAN',0,0,'C');


/* setting header table */
$this->fpdf->Ln(1);
$this->fpdf->SetFont('Times','B',12);
$this->fpdf->Cell(6  , 1, 'NIK'           , 1, 'LR', 'L');
$this->fpdf->Cell(13 , 1, 'NAMA KARYAWAN' , 1, 'LR', 'L');

/* generate hasil query disini */
foreach($karyawan->result() as $data)
{
    $this->fpdf->Ln();
    $this->fpdf->SetFont('Times','',12);
    $this->fpdf->Cell(6  , 0.7, $data->nik  , 1, 'LR', 'L');
    $this->fpdf->Cell(13 , 0.7, $data->nama , 1, 'LR', 'L');
}
/* setting posisi footer 3 cm dari bawah */
$this->fpdf->SetY(-3);

/* setting font untuk footer */
$this->fpdf->SetFont('Times','',10);

/* setting cell untuk waktu pencetakan */
$this->fpdf->Cell(9.5, 0.5, 'Printed on : '.date('d/m/Y H:i').' | Created by : Anton Sofyan',0,'LR','L');

/* setting cell untuk page number */
$this->fpdf->Cell(9.5, 0.5, 'Page '.$this->fpdf->PageNo().'/{nb}',0,0,'R');

/* generate pdf jika semua konstruktor, data yang akan ditampilkan, dll sudah selesai */
$this->fpdf->Output("data_karyawan.pdf","I");
?>

source : 
http://antonsofyan.stikeskuningan.ac.id/wp-content/uploads/2012/04/pdf_report.rar

Share this

Related Posts

Previous
Next Post »