Generate/Create File PDF on the Fly dengan EZPDF di Code Igniter

By deptz, Wed. March 11, 2009
Categories: computer related, crocodile's news, elins, handphone, internet related, PHP related, tutorial
Tags: , , , , , , , ,
5,987 views
R&OS Ltd

R&OS Ltd

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:

Generate PDF di browser Opera

Generate PDF di browser Opera

Ketika didownload:

Download File

Download File

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:

Table dua kolom

Table dua kolom

Dokumentasinya pun lumayan lengkap. Dalam file yang kita download sudah disediakan. Selamat berkreasi. 🙂

34 Responses to “Generate/Create File PDF on the Fly dengan EZPDF di Code Igniter”

  1. senoaji Says:

    *geleng-geleng!* tetap semangat untuk belajar disini!

  2. d3ptzz Says:

    *angguk-angguk* Mari belajar bersama gan!!

  3. Sanjaya Says:

    woalah dalah..
    opo meneh kui..
    hahahaaa

  4. d3ptzz Says:

    @sanjaya: itu makanan gan!ahahaha

  5. cewe cute Says:

    ahhhh binguuuung…

  6. d3ptzz Says:

    @Cewe cute: bagian mana yang bingung?hehe

  7. gemini Says:

    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

  8. d3ptzz Says:

    @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

  9. gemini Says:

    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..?

  10. d3ptzz Says:

    ya itu.. seperti itu… bingungnya bagian mana? coba dulu misal ngambil dari satu tabel.. baru kemudian dibahas lagi yang ga bisa bagian mana..ok?:-)

  11. rendra kurbiawan Says:

    hahahaha,,, thanks

  12. d3ptzz Says:

    @rendra kurbiawan: sama-sama gan..:-)

  13. zam Says:

    woh!

    lagi sercing2 bab CI malah nyasar ning blogmu. dolananmu ngeri, dab. hehehe..

    suwun infone.. tapi sayang, sing tak goleki dudu iki.. 😀

  14. d3ptzz Says:

    @zam: lagi belajar mas.. hehe.. lha sik dicari opo mas? nek cari makanan disini ga ada…hehhee..:D

  15. mbahsomo Says:

    wah cari yang bahasa indonesia tapi sama hasilnya error juga 😀

  16. vandijk Says:

    $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…

  17. d3ptzz Says:

    @vandijk, maaf baru sadar ada salah ketik, bagian:
    $this->cezpdf->ezTable($data,$heading,’Judul Table);

    harusnya:
    $this->cezpdf->ezTable($data,$heading,’Judul Table’);

  18. fajar Says:

    dari hasil generate pdf-nya apakah bisa disimpan dalam suatu file mas ? jadi hasil-nya disimpan di file system ?

    tq

  19. d3ptzz Says:

    @fajar harusnya langsung mengembalikan output berupa file. saya dulu menggunakan CI 1.7.1

  20. fajar Says:

    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!’;
    }

  21. d3ptzz Says:

    @fajar: oke, terimakasih atas pengembangannya. dulu saya pas menggunakan $this->cezpdf->ezStream(); sudah langsung prompt file untuk download. saya belum mencobanya lagi…

  22. fajar Says:

    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 ?

  23. d3ptzz Says:

    @fajar mungkin bisa diseting dengan cara menseting halaman.. margin atas? atau jeda antar elemen? kayak bikin CSS lah..:D

  24. re Says:

    sdasasdas

  25. ben Says:

    *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…

  26. wakkeroh Says:

    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();
    ?>

  27. dedy Says:

    kalo pingnin nampilkan 500 record, kan butuh halaman lebih dari satu, itu g mana caranya? saya bisa menmpilkan cuma 1 halaman saja… mohon pencerahan

  28. yuda supri Says:

    hmm. . . saya kurang paham yang beginian .hehe
    tapi kayaknya berguna juga.ikuan nyimak deh.

  29. kendol Says:

    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

  30. Anna Says:

    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 😀

  31. d3ptzz Says:

    @anna: cek line 15.. itu ada object yang digunakan sebagai array

  32. pdf codeigniter « blog nya adi Says:

    […] untuk pdf di codeigniter dulu saya memakai EZPDF. karena kebutuhan report nya waktu itu simple bangetz. waktu itu saya nemu tutorial nya di d3ptzz […]

  33. dans Says:

    artikelnya bagus,
    sangat membantu pisan,,^_^

  34. pakdhe Says:

    @anna : $data = $this->Pdf_model->ambil_data();
    coba ganti dengan $data = $this->Pdf_model->ambil_data()->result_array();
    semoga membantu :))

Comments