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

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

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

  1. gemini

    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

    Reply
  2. gemini

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

    Reply
    1. d3ptzz Post author

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

      Reply
  3. zam

    woh!

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

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

    Reply
  4. vandijk

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

    Reply
    1. d3ptzz Post author

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

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

      Reply
  5. fajar

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

    Reply
    1. d3ptzz Post author

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

      Reply
  6. fajar

    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 ?

    Reply
  7. ben

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

    Reply
  8. wakkeroh

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

    Reply
  9. dedy

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

    Reply
  10. kendol

    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

    Reply
  11. Anna

    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 😀

    Reply
  12. Pingback: pdf codeigniter « blog nya adi

  13. pakdhe

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

    Reply

Leave a Reply to fajar Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.