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,
- kemudian extract file tersebut dan copy-kan file fpdf.php yang ada didalam folder tersebut kedalam folder CI system/library/
- 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/
- 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
EmoticonEmoticon