Generate/Write File PDF on the fly? Yups! Kita akan menggenerate langsung file pdf ketika diminta. Misalnya saja laporan pembayaran, atau yang lain yang diambil dari database. Atau mungkin form pendaftaran seperti ketika pendaftaran UM UGM. Kemarin saya ‘terpaksa’ mencari cara agar bisa generate on the fly. Dan menemukan di blog masdeka. Terimakasih gan!
Saya pun mengembangkannya untuk keperluan saya sendiri, yaitu ambil data dari database, kemudian menggenerate file PDF yang isinya berbentuk tabel dalam halaman berformat dua kolom. Dan itu bisa dilakukan dengan ezpdf dengan mudah!
EZPDF? Apa itu? EZPDF adalah sebuah class PHP yang dikembangkan oleh R&OS Ltd. Didesain untuk menyediakan alternatif non-module, non comercial untuk secara dinamis membuat file PDF dengan PHP. EZPDF dapat dikunjungi di SINI dan SINI. Silahkan berkunjung dulu dan jangan lupa download! 🙂
Mari kita mulai dengan code igniter.
Kemudian bagaimana cara mengintegrasikannya dalam Code Igniter? Dalam code igniter, memang sangat mudah dalam ‘memasukkan’ librari baru. Setelah anda mendapatkan file .zip atau .tar.gz dari website yang saya sebutkan diatas, segera extract. Kemudian copy file class.ezpdf.php dan class.pdf.php ke folder /[working path]/system/application/libraries/. Kemudian rename class.ezpdf.php menjadi cezpdf.php. Setelah rename, edit file tersebut. Edit baris ketiga menjadi => include_once(APPPATH . ‘libraries/class.pdf.php’);
Done!
Setelah itu anda bisa langsung panggil librari ezpdf dengan $this->load->library(‘cezpdf’). Berikut ini contoh scriptnya:
class Pdf extends Controller{
function __construct(){
parent::Controller();
$this->load->library(‘cezpdf’);
}
function index(){
$text = “http://d3ptzz.kandangbuaya.com”;
$this->cezpdf->ezText($text,12,array(‘justification’ => ‘center’));
$this->cezpdf->ezStream(array(‘Content-Disposition’=>’nama_file.pdf’));
}
}
Berikut ini screenshotsnya:
Ketika didownload:
Anda juga bisa langsung load data dari model dan menggenerate ke dalam tabel:
$data = $this->Model->get_data();
$heading = array(‘nama_kolom_dalam_table’ => ‘Heading 1’,
‘nama_kolom_dalam_table1’ => ‘Heading2’,
‘nama_kolom_dalam_table2’ => ‘Heading3′
);
$this->cezpdf->ezTable($data,$heading,’Judul Table’);
Hasil yang lebih kompleks pun bisa dibuat misalnya dengan dua kolom seperti ini:
Dokumentasinya pun lumayan lengkap. Dalam file yang kita download sudah disediakan. Selamat berkreasi. 🙂
*geleng-geleng!* tetap semangat untuk belajar disini!
*angguk-angguk* Mari belajar bersama gan!!
woalah dalah..
opo meneh kui..
hahahaaa
@sanjaya: itu makanan gan!ahahaha
ahhhh binguuuung…
@Cewe cute: bagian mana yang bingung?hehe
Mas dimana yah tempat downloadnya, saya udah ambil dari mas deka kok error yah, saya mau coba disini kok gak tau dimana downloadnya… kok gak ada view-nya yah emang sistemnya gitu yah
@gemini: lha itu, contoh code-nya saya postingkan diatas. memang cuma controller saja. kalau mau download pdfnya ya tinggal panggil saja controllernya. misal nama controllernya pdf. http://[base_url]/index.php/pdf. base url diganti dengan base url yang kamu gunakan.
masih bingung ga?:D
dikit mas, yang penting sekarang udah jalan… mas kalau ambil dari data base gimana ???
$data = $this->Model->get_data();
$heading = array(’nama_kolom_dalam_table’ => ‘Heading 1′,
‘nama_kolom_dalam_table1′ => ‘Heading2′,
‘nama_kolom_dalam_table2′ => ‘Heading3′
);
nama_kolom_dalam_table kalo diisi kok error …??
A PHP Error was encountered
Severity: Notice
Message: Undefined index:
Filename: libraries/class.pdf.php
Line Number: 1631
kira-kira apa yah..?
ya itu.. seperti itu… bingungnya bagian mana? coba dulu misal ngambil dari satu tabel.. baru kemudian dibahas lagi yang ga bisa bagian mana..ok?:-)
hahahaha,,, thanks
@rendra kurbiawan: sama-sama gan..:-)
woh!
lagi sercing2 bab CI malah nyasar ning blogmu. dolananmu ngeri, dab. hehehe..
suwun infone.. tapi sayang, sing tak goleki dudu iki.. 😀
@zam: lagi belajar mas.. hehe.. lha sik dicari opo mas? nek cari makanan disini ga ada…hehhee..:D
wah cari yang bahasa indonesia tapi sama hasilnya error juga 😀
$data = $this->Model->get_data();
$heading = array(’nama_kolom_dalam_table’ => ‘Heading 1′,
‘nama_kolom_dalam_table1′ => ‘Heading2′,
‘nama_kolom_dalam_table2′ => ‘Heading3′
);
$this->cezpdf->ezTable($data,$heading,’Judul Table);
kmrn udh nyobain coding di atas error,punya contoh lagi gak yg ngmbil data langsung dr db…
@vandijk, maaf baru sadar ada salah ketik, bagian:
$this->cezpdf->ezTable($data,$heading,’Judul Table);
harusnya:
$this->cezpdf->ezTable($data,$heading,’Judul Table’);
dari hasil generate pdf-nya apakah bisa disimpan dalam suatu file mas ? jadi hasil-nya disimpan di file system ?
tq
@fajar harusnya langsung mengembalikan output berupa file. saya dulu menggunakan CI 1.7.1
iy mas terima kasih udah bisa maksud saya seperti ini :
$this->cezpdf->ezTable($db_data, $col_names, ‘Contact List’, array(‘width’=>550,’showLines’=>0,’shaded’=>0));
#$this->cezpdf->ezStream();
$pdfcode = $this->cezpdf->ezOutput();
if ( ! write_file(‘./file/file_nya.pdf’, $pdfcode,’wb’))
{
echo ‘Unable to write the file’;
}
else
{
echo ‘File written!’;
}
@fajar: oke, terimakasih atas pengembangannya. dulu saya pas menggunakan $this->cezpdf->ezStream(); sudah langsung prompt file untuk download. saya belum mencobanya lagi…
mau nanya lagi ini mas .. 🙂 kalo tabel bisa di set posisi vertikal nya tidak ya saya baca di dokumentasinya cuman ada xPos untuk parameter fungsi ezTable tetapi kok yPos-ny tidak ada ya ?
@fajar mungkin bisa diseting dengan cara menseting halaman.. margin atas? atau jeda antar elemen? kayak bikin CSS lah..:D
sdasasdas
*cara rata kanan gimana mas ya?
saya coba justification=right, kok malah jadinya disebelah kanan tabel…
*sama cara set posisi text, vertikal pas center di tengah ditabel kok ga ada ya…
saya coba, jadinya mepet dibagian atas cell…
master kira” d bagian mana scrip saya yg salah, masalahnya datanya tidak nampil d table, jumlah row d table udah sama dengan data d database,,,,,
cuma itu masalahnya, d pdfnya cuma table kosong….
tolong y master,,,,
tQ sebelum n sesudhnya,, 🙂
$sql = mysql_query(“SELECT * FROM user”);
$i = 1;
while ($r = mysql_fetch_array($sql)) {
$data[$i]=array(‘NO’=>$i,
‘USER’=>$r[‘username’],
‘REALNAME’=>$r[‘realname’]);
$i++;
}
// Tampilkan data dalam bentuk tabel
$pdf->ezTable($data, ”, ”, ”);
// Penomoran Halaman
$pdf->ezStartPageNumbers(320, 15, 8);
$pdf->ezStream();
?>
kalo pingnin nampilkan 500 record, kan butuh halaman lebih dari satu, itu g mana caranya? saya bisa menmpilkan cuma 1 halaman saja… mohon pencerahan
hmm. . . saya kurang paham yang beginian .hehe
tapi kayaknya berguna juga.ikuan nyimak deh.
Mas ono opo, kodenya metu seperti ini
A PHP Error was encountered
Severity: Warning
Message: include_once(C:\xampp\xampp\htdocs\hrd/system/application/libraries/class.pdf.php) [function.include-once]: failed to open stream: No such file or directory
Filename: libraries/cezpdf.php
Line Number: 3
A PHP Error was encountered
Severity: Warning
Message: include_once() [function.include]: Failed opening ‘C:\xampp\xampp\htdocs\hrd/system/application/libraries/class.pdf.php’ for inclusion (include_path=’.;C:\xampp\xampp\php\PEAR’)
Filename: libraries/cezpdf.php
Line Number: 3
Fatal error: Class ‘Cpdf’ not found in C:\xampp\xampp\htdocs\hrd\system\libraries\cezpdf.php on line 5
mas boleh minta contoh skrip yg load data dari model yg lengkap ngga.. soalnya sy nyobain masih error.. script yg sy coba:
load->library(‘cezpdf’);
$this->load->Model(‘Pdf_model’, ”, TRUE);
}
function index(){
$data = $this->Pdf_model->ambil_data();
foreach($data as $row)
{
$data_project[] = array(
‘kode_persh’ => $row[‘kode_persh’],
‘kode_dept’ => $row[‘kode_dept’],
‘kode_project’ => $row[‘kode_project’],
‘kode_tahun’ => $row[‘kode_tahun’],
‘kode_urut’ => $row[‘kode_urut’]
);
}
$heading = array(‘kode_persh’ => ‘Companu ID’,
‘kode_dept’ => ‘Dept ID’,
‘kode_project’ => ‘Project ID’,
‘kode_tahun’ => ‘Year ID’,
‘kode_urut’ => ‘ID’
);
$this->cezpdf->ezTable($data_project,$heading,’Judul Table’);
$this->cezpdf->ezStream(array(‘Content-Disposition’=>’ReportProjectOnGoing.pdf’));
}
}
?>
tp masih error, errornya
Fatal error: Cannot use object of type stdClass as array in D:\xampp\htdocs\indomesin_org\system\application\controllers\pdf.php on line 15
mohon bntuannya yah mas 😀
@anna: cek line 15.. itu ada object yang digunakan sebagai array
Pingback: pdf codeigniter « blog nya adi
artikelnya bagus,
sangat membantu pisan,,^_^
@anna : $data = $this->Pdf_model->ambil_data();
coba ganti dengan $data = $this->Pdf_model->ambil_data()->result_array();
semoga membantu :))
gan tanya kalo beri tab di ezpdf gimana ya caranya?