Skip to main content

Membuat Report dengan Format PDF pake FPDF Class dan CI

November 25, 2010 by harisbag

harisbag's picture

Teman-teman, bagi yang butuh report atau pelaporan dengan format pdf, mungkin share ini bisa membantu :

Pertama, kita butuh fpdf class yang bisa kita unduh di http://www.fpdf.org/en/download.php.
Isi download ada beberapa folder dan file yang akan kita pakai yaitu:

  • Folder Font
  • File fpdf.php
  • File fpdf.css

Copykan isi folder ini (isinya ada beberapa file php pembentuk font) ke dalam folder font proyek anda (folder font ini sudah ada karena bawaan CInya). Copykan 2 file diatas pada folder libraries system.
Pengaturan berikutnya ada pada config/Autoload.php. Panggil fpdf class di atas lewat autoload seperti contoh di bawah ini:

$autoload['libraries'] = array('fpdf');

Nah kalo sudah tinggal buat view yang berisi kode pdf class untuk membentuk pdf 'on the fly' istilah kerennya. Contoh kode pada view:

<?
$pdf=new FPDF('L','mm', array(216, 330));
$pdf->setTopMargin(15);
$pdf->setLeftMargin(12);
$pdf->SetFont('helvetica','B', 11);
 
$pdf->AddPage();
$pdf->Cell(6);
$pdf->Cell(100, 12,'Hallo Pengguna CI',0,1,'L');
$pdf->Output();
?>

Code class di atas dapat anda pelajari selengkapnya pada tutorial dari file fpdf yang sudah anda download tadi.
Keterangan singkat:

  • new FPDF diatas: L adalah landscape (posisi kertas), mm adalah ukuran yg kita pakai yaitu milimeter, ukuran kertas panjang 216 mm x 330mm (Folio).
  • setTopMargin dan setLeftMargin menentukan margin.
  • SetFont menentukan jenis font-nya, Style Bold dan ukuran 11.
  • AddPage adalah membuat halaman baru.
  • Cell(6) membuat 1 sel tabel selebar 6mm dari margin.
  • Cell berikutnya membuat 1 sel tabel dengan lebar 100mm, tingginya 12mm, isinya teks Hallo Pengguna CI, 0 adalah tanpa garis batas selnya(no border), 1 untuk memenggal baris dan menuju ke baris baru setelah sel tersebut dibuat. L(eft) atau kiri adalah perataan teksnya.
  • Output akan menghasilkan file pdf yang dikirim ke browser.

Anda selanjutnya dapat membuka view diatas dari controller.
Yang menjadi catatan bahwa jangan meload view lain sebelum view pdf tersebut sebab akan memunculkan error header already bent sent .... Jadi cukup view code pdf saja.
Contoh:

....
function cetak_pdf()
{
     $this->load->view('Nama File pdf anda');
}
....

Ok teman-teman selamat mencoba. semoga bermanfaat.

Comments

insert coding nya

September 24, 2011 by hamada, 2 days 18 hours ago
Comment: 9035

hamada's picture

kang..gimana ni cara masukin coding nya... n cara connect ke dql nya dan coding fpdf nya di taruh d mana? maaakasiih

Coding FPDF

September 24, 2011 by harisbag, 2 days 8 hours ago
Comment: 9036

harisbag's picture

Ya ... untuk membuat coding fpdf, anda dapat melakukannya di file View (file yang diletakkan pada folder application/view). Sedangkan koneksi database dan pemanggilan data dapat dilakukan pada file controller (file yang diletakkan pada folder application/controller). Bisa juga pemanggilan data diletakkan pada file view lalu diolah hasilnya sebagai pdf.
Contoh file controller (kustomer.php):

<?
Class Kustomer extends Controller
{
    function Kustomer()
    {
        parent::Controller();
        if($this->session->userdata('userid')=='')
        {
            redirect(site_url());
        }
    }
 
    function index()
    {
		$this->load->model('prosesdata');
		$data['id']      = $this->prosesdata->load_id();
		$data['title']   = 'Data Kustomer - Input / Edit / Delete';
		$this->load->view('header', $data);
		$data['kst']   = $this->prosesdata->view_data('SELECT * FROM kustomer Order By id_kustomer Asc');
		$this->load->view('v_kustomer',$data);
		$this->load->view('footer');
    }
 
    function cetak()
    {
		$data['id']      = $this->prosesdata->load_id();
		$kriteria        = $this->uri->segment(3);
		$data['filter']  = $this->prosesdata->view_data('SELECT * FROM kustomer WHERE id_kustomer = "'.$kriteria.'"');
		$data['title']   = 'Cetak Data Kustomer';
      $this->load->view('v_cetakkustomer', $data);
    }
 
}

Lalu untuk file view (v_cetakkustomer.php) :

<?
class PDF extends FPDF
{
 
   function Footer()
   {
       $this->SetY(-12);
       $this->SetFont('Arial','B',10);
       $this->Cell(0,10,'Hal. '.$this->PageNo().' / {nb}',0,0,'C');
   }
}
 
$pdf = new PDF('P', 'mm', array(216,330));
$pdf->AliasNbPages();
$pdf->setleftmargin(10);
$pdf->settopmargin(20);
$pdf->AddPage();
$pdf->SetTitle($title);
$pdf->Image('images/logo.jpg',15,10,38,30);
$pdf->setFont('helvetica','B',10);
$pdf->setXY(55,16);
$pdf->Cell(380,4,strtoupper($id->nama),0,1,'L');
$pdf->setXY(55,21);
$pdf->Cell(200,4,strtoupper('Registration Card'),0,1,'L');
$pdf->setXY(115,12);
$pdf->setFont('helvetica','B',10);
$pdf->LN(); $pdf->LN();
$pdf->setXY(10,50);
//Judul Kolom Tabel
$row = $filter->row();
$pdf->SetFillColor(133,176,255);
$pdf->Cell(60,6,'Registration No. : '.$row->id_kustomer,0,0,'L',TRUE);
 
if($row->tgl_daftar!='0000-00-00 00:00:00'){
	$tgl_daftar=$this->fungsi->format_tgl($row->tgl_daftar,'panjang');
}
else
{
   $tgl_daftar=$this->fungsi->format_tgl(date('Y-m-d'),'panjang');
}
 
$pdf->Cell(120,6,'Registration Date  : '.$tgl_daftar.'  ',0,1,'R',TRUE);
$pdf->Cell(60,5,'Nama Tamu',1,0,'L');
$pdf->Cell(120,10,' '.$row->nama_kustomer,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Guest Name',1,1,'L');
$pdf->Cell(60,5,'Alamat',1,0,'L');
$pdf->Cell(120,10,' '.$row->alamat,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Address',1,1,'L');
$pdf->Cell(60,5,'Kota',1,0,'L');
$pdf->Cell(120,10,' '.$row->kota,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'City',1,1,'L');
$pdf->Cell(60,5,'Negara',1,0,'L');
$pdf->Cell(120,10,' '.$row->negara,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'State',1,1,'L');
$pdf->Cell(60,5,'Warganegara',1,0,'L');
$pdf->Cell(120,10,' '.$row->warganegara,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Nationality',1,1,'L');
$pdf->Cell(60,5,'Pekerjaan',1,0,'L');
$pdf->Cell(120,10,' '.$row->pekerjaan,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Ocupation',1,1,'L');
$pdf->Cell(60,5,'Identitas',1,0,'L');
$pdf->Cell(120,10,' '.$row->no_id,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Identity',1,1,'L');
$pdf->Cell(60,5,'Kendaraan',1,0,'L');
$pdf->Cell(120,10,' '.$row->kendaraan,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Vehicles',1,1,'L');
$pdf->Cell(60,5,'No Plat',1,0,'L');
$pdf->Cell(120,10,' '.$row->plat_no,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Vehicle No.',1,1,'L');
$pdf->Cell(60,5,'Pengemudi',1,0,'L');
$pdf->Cell(120,10,' '.$row->pengemudi,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Driver Name',1,1,'L');
$pdf->Cell(60,5,'Lain-Lain',1,0,'L');
$pdf->Cell(120,10,' '.$row->lainnya,1,0,'L');$pdf->Cell(1,5,'',0,1,'L');
$pdf->Cell(60,5,'Others',1,1,'L');
 
$pdf->Output();
?>

Dari kode diatas --- pada file kustomer.php terdapat fungsi cetak ; yang mana sebelumnya dipersiapkan dahulu data yang akan dicetak via pdf. Sedangkan layout pdf hasil, diletakkan
pada file v_cetakkustomer.php.

Ini file model-nya (prosesdata.php) :

<?
Class Prosesdata extends Model
{
    function Prosesdata()
    {
        parent::Model();
    }
 
    function load_id()
    {
    	$hasil = $this->db->get('tidentitas');
    	if($hasil->num_rows()>0)
    	{
    	   return $hasil->row();	
    	}
    	else
    	{
    	   return false;
    	}
    }
 
    function check_login($kriteria)
    {
        $this->db->where($kriteria);
        $query = $this->db->get_where('karyawan');
        if($query->num_rows>0)
        {
            return $query->row();	
        }
        else
        {
            return FALSE;	
        }
    }
 
    function view_data($sql)
    {
        $query = $this->db->query($sql);
        return $query;   	
    }
 
    function jml_data($sql)
    {
        $query = $this->db->query($sql);
        return $query->num_rows();   	
    }
 
    function insert_data($data, $tabel)
    {
    	$this->db->insert($tabel, $data);
    }
 
    function update_data($key, $data, $tabel)
    {
        $this->db->where($key);
        $this->db->update($tabel, $data); 	
    }
 
    function delete_data($key, $tabel)
    {
        $this->db->where($key);
        $this->db->delete($tabel);    	
    }

FPDF

December 20, 2010 by yugo_sting, 40 weeks 12 hours ago
Comment: 7481

yugo_sting's picture

cobain ahh

thx,infonya kang :)

Premium Drupal Themes by Adaptivethemes