Membuat Laporan (Report) PDF dengan PHP dan HTML2FPDF

Bagi kita yang sering berkecimpung di dunia web development, termasuk saya, tentunya pernah diminta membuat suatu aplikasi yang didalamnya terdapat modul laporan. Dalam hal pembuatan laporan tersebut, terkadang kita kesulitan dalam menentukan format dan library yang akan kita gunakan. Beberapa format laporan yang sering digunakan adalah format HTML (dan CSS), PDF, Image, CSV dan Excel (Spreadsheet). Masing-masing format tersebut memiliki kelebihan dan keterbatasannya masing-masing.

PDF

PDF (Portable Document Format) merupakan salah satu pilihan format laporan yang sering digunakan dalam aplikasi berbasis web. Kelebihannya antara lain formatnya yang standar dan dapat ditampilkan di semua platform sistem operasi (cross platform). Selain itu, format PDF lebih terjamin dari sisi keamanan dan kevalidan data yang disajikan. PDF juga lebih mudah disimpan atau diarsip karena dalam bentuk file. Namun disisi lain, kekurangan dari PDF adalah saat ini masih jarang tersedia library pembuatan PDF berbasis web yang cukup mudah digunakan namun handal.

PHP merupakan bahasa pemrograman berbasis web yang saat ini banyak digunakan dalam membangun aplikasi web. Alasannya karena PHP itu open source (free), mudah dipelajari dan memiliki banyak library untuk berbagai keperluan. Termasuk diantara library yang didukung oleh PHP adalah yang berhubungan dengan manipulasi PDF on-the-fly. Beberapa contoh library PHP untuk manipulasi PDF yaitu FPDF (http://www.fpdf.org), TCPDF (http://www.tcpdf.org), PDFLib dan beberapa library lainnya.

Untuk urusan manipulasi PDF, memang library seperti FPDF dan TCPDF memang cukup handal. Library tersebut dapat digunakan untuk meng-generate file PDF secara on-the-fly di browser. Namun bagi kita yang masih pemula, agak kesulitan dalam mengimplementasikan library tersebut, karena cukup susah dalam penempatan objek-objek laporan, terutama jika laporannya sudah kompleks.

HTML2FPDF

Setelah melakukan pencarian di internet, akhirnya saya menemukan satu class (library) PHP yang cukup handal dan mudah dalam hal pembuatan file PDF. Library tersebut bernama HTML2FPDF, dan beralamat di http://html2fpdf.sourceforge.net/. Pada intinya cara kerja yang dilakukan oleh library tersebut adalah mengubah perintah-perintah HTML menjadi PDF. Jadi, bagi kita yang akan membuat laporan cukup membuatnya melalui perintah-perintah HTML yang tentunya kita sudah lebih familiar. Selanjutnya kita tinggal “menyuruh” librari HTML2FPDF untuk mengubahnya menjadi file PDF. Cukup mudah kan?

Cara Kerja HTML2FPDF
Cara Kerja HTML2FPDF

HTML2FPDF sendiri menggunakan library FPDF dalam hal pembuatan file PDF. Sehingga selain class-nya, kita juga memerlukan library dari FPDF di server kita. HTML2FPDF dapat didapatkan dari situs resminya di http://html2fpdf.sourceforge.net/ secara cuma-cuma (gratis). Namun di situs tersebut tidak disertakan library FPDF, jadi kita harus menambahkannya sendiri. Sebagai alternatif, Anda dapat mendapatkan versi lengkap dari library HTML2FPDF (termasuk FPDF dan beberapa contoh programnya) di alamat berikut ini:

HTML2FPDF (327.4 KiB, 43,449 hits)

Contoh Penggunaan HTML2FPDF

Untuk membuat laporan PDF dengan class (library) HTML2FPDF, pada dasarnya dapat dilakukan melalui 2 (dua) cara. Cara yang pertama adalah dengan membuat file HTML terlebih dahulu lalu membaca isinya dan mengirimkannya ke class untuk dikonvert ke PDF. Lalu cara yang kedua adalah dengan membuat file HTML secara langsung di code program (PHP). Keduanya pada dasarnya sama.

Berikut ini contoh program untuk mengkonversi file “sample.html” ke PDF.

[codesyntax lang=”php” lines=”fancy”]

<?
require('html2fpdf/html2fpdf.php');
$pdf=new HTML2FPDF();
$pdf->AddPage();
$fp = fopen("sample.html","r");
$strContent = fread($fp, filesize("sample.html"));
fclose($fp);
$pdf->WriteHTML($strContent);
$pdf->Output("sample.pdf","I");
//echo "PDF file is generated successfully!";
?>

[/codesyntax]

Hasil program diatas dapat dicoba di sini.

Dan berikut ini contoh program untuk meng-generate PDF dimana code HTML langsung dituliskan di PHP.

[codesyntax lang=”php” lines=”fancy”]

<?php
require('html2fpdf/html2fpdf.php');
$pdf=new HTML2FPDF();
$pdf->AddPage();
$strContent = "<h1 align=center>Hello World!</h1><p>Sekarang saya bisa bikin laporan PDF dengan mudah</p>";
$pdf->WriteHTML($strContent);
$pdf->Output("sample2.pdf","I");
//echo "PDF file is generated successfully!";
?>

[/codesyntax]

Demo program di atas dapat dilihat di sini.

Semoga bermanfaat.

Referensi

92 thoughts on “Membuat Laporan (Report) PDF dengan PHP dan HTML2FPDF

  1. #yitnoku
    komputer ga mengenal umur, banyak kok anak2 smp yg dah jago2 komputer, bahkan jadi hacker juga banyak.

    #jawaad
    oke, sama-sama

    #widik
    itu pake plugin “Syntax Highlighter”, coba cari di situsnya plugin wp, atau di google.

  2. #Didan
    kacau balaunya gmana? mungkin code html-nya ada yang salah, kalo mau silahkan japri ke email saya code-nya, sapa tau saya bisa bantu. 😀

  3. Mas, saya pake appserv, td dah coba sedot file-nya terus setelah diekstrak mau ditaruh dimana? saya coba taruh di localhost kok keluarnya kayak gini :

    Fatal error: Call to undefined method HTML2FPDF::DisplayPreferences() in C:\AppServ\www\html2fpdf.php on line 155

  4. mas , aku pakai html2fpdf setelah saya coba try-nya kok keluarnya seprti ini:
    AddPage(); $pdf->WriteHTML($buffer); $pdf->Output(‘doc.pdf’,’I’); ?>

  5. Mau tanya mas,,klo html2fpdf digabung dengan css bisa tidak.tp cssnya berbentuk external file bukan inline dengan html2fpdfnya.

    Thx

  6. mas aku mau tanya aku buat prgram pke php n dreamweaver yang jalan di joomla trus cara buat report dara program yg aku buat gmn ya conohnya buat report data pegawai per NIK dll…thank

  7. mau nanya nih mas.. kalo membuat report di PHP gimana y? tapi bukan bentuk PDF. yg klo di VB, byasana pake crystal report. nah, klo di PHP gimana y…???

  8. Mas aku mau tanya kalo filenya php bagaimana? aku dah coba tapi error.

    coz aku buat query data n tampilan di php.

    1. #Yosep
      kebetulan library tersebut fungsinya untuk mengubah HTML ke pdf. Kalo mau lebih fleksibel, bisa gunakan library fpdf (http://fpdf.org)

      #ardik
      coba cari mengenai agatha report

  9. pak,,tlg bri tau saya bagaimana cara membuat laporan absensi mingguan. laporan tsb berisi 6 tgl krna laporan tsb mingguan..

    tlg y pak,,krna stelah saya tmpilkan d website dgn PHP, saya akan buat laporan tsb dgn format PDF.

    thnx b4.

  10. mas, kalo di php, biasanya untuk report kita sudah punya template sendiri. nah gimana atau dengan cara apa, kalo kita punya aplikasi yang templatenya itu bisa kita tambahin pada saat aplikasi telah diimplemen tapi tanpa ngubah coding:
    contoh kasus:

    aplikasi saya berguna untuk membuat laporan setoran tuna ke beberapa bank. oke, pada saat develop saya bisa bikin template yang dibutuhkan, misal template untuk bank A. tapi setelah implement ternyata saya butuh template bank B, gmn caranya saya nambah template tanpa ubah coding didalam??
    kalo aplikasi dekstop kan biasanya pake Crytal Report

    makasih

  11. makasi Infonya ya bang. Indah rasanya dunia ini klau smua orang mau berbagi ilmu.nanti saya akan coba. mngkin berguna utk skripsi saya. skli lgi makasi

  12. Terimakasih buanyak atas sharenya…. Bermanfaat sekali. Saya sekarang juga pakai html2pdf untuk reporting.
    But…..
    Ada yang sedikit aneh nih (apa gw yang gak ngerti??) mohon petunjuk.
    Kemaren pengen masukin tag “<ul></ul>” dalam “<td></td>”, tapi mengapa hasilnya tidak terlalu memuaskan yach? sepertinya numbering di dalam kolom  di abaikan waktu di convert jadi pdf.
    Ini kodenya :
    <table>
    <tr>
    <td>&nbsp;
    <ul>
    <li>ini nomer satu</li>
    <li>ini nomer dua</li>
    <li>ini nomer tiga</li>
    <li>dan seterusnya</li>
    </ul>
    </td>
    </tr>
    </table>
    Output PDF-nya :
    ——————————————————–
    | ini nomer satu ini nomer dua ini nomer tiga |
    ——————————————————–
    Jika berkenan mohon petunjuknya….

  13. pak saya coba pk code igniter, trs html nya dpt dr php seperti yg bapak contohkan. tp ko ga tampil apa2 yah. mohon pencerahannya dong

  14. saya coba code ini :
    function re(){
    $pdf=new HTML2FPDF();
    $pdf->AddPage();
    $strContent = ”
    Hello World!

    Sekarang saya bisa bikin laporan PDF dengan mudah

    “;
    $pdf->WriteHTML($strContent);
    $pdf->Output(“sample.pdf”);

    }
    dgn memakai code igniter, yang di simpan di controlernya
    tp ko ga tampil apa2 ya

  15. saya coba code ini:
    function re(){
    $pdf=new HTML2FPDF();
    $pdf->AddPage();
    $strContent = ”
    Hello World!

    Sekarang saya bisa bikin laporan PDF dengan mudah

    “;
    $pdf->WriteHTML($strContent);
    $pdf->Output(“sample.pdf”);

    }
    dengan memakai code igniter, code diatas di taro di controller. tp ko ga nampil apa2 yah? mohon pencerahannya. makasih

    1. #ita. Pada contoh tersebut sebenarnya sudah otomatis menampilkan hasil PDF ke browser namun browser harus support (bisa membuka) PDF. Opsi dapat diatur di fungsi $pdf->Output(), parameter kedua dapat disetting sebagai “I” jika ingin ditampilkan di browser, “D” jika ingin pdf otomatis download, “F” jika menyimpan ke file dan “S” jika ingin menampilkan dokumen sbg string.

  16. keren share ilmunya mas… tp sy masih bermasalah pada laporan jika diperlukan tandatangan pada akhir laporannya… terlebih kalo laporan itu lebih dari satu halaman… mohon pencerahannya mas. ditunggu ya mas terimaksih

  17. Terima kasih pak share-nya,ttp saya ada kendala ketika saya eksekusi muncul error:
    Fatal error: Call to undefined function get_magic_quotes_runtime() in C:\AppServ\www\potensidesamap\fpdf\html2fpdf\fpdf16.php on line 1804
    Mohon bantuannya..

  18. mas kok keluaran aku kaya gini yah :
     
    %PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream xœ3Rðâ2Ð35W(çr QÐw3T04Ô30PISp á1 Ò¹ €¤P‘…ž±©‚…±ž¡©BHŠ‚Fb¢‚‚¦BHPµB Ä#K„ `cd YS!æ™êYX€ì41›g¨oˆfª‹Ð_%Q endstream endobj 1 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 2 0 obj <> >> endobj 8 0 obj << /Producer (FPDF 1.52) /Creator (HTML2FPDF >> http://html2fpdf.sf.net) /CreationDate (D:20101201002328) >> endobj 9 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /FitH null] /PageLayout /OneColumn >> endobj xref 0 10 0000000000 65535 f 0000000272 00000 n 0000000660 00000 n 0000000009 00000 n 0000000087 00000 n 0000000359 00000 n 0000000455 00000 n 0000000556 00000 n 0000000768 00000 n 0000000892 00000 n trailer << /Size 10 /Root 9 0 R /Info 8 0 R >> startxref 995 %%EOF

  19. om kok untuk yang index3,4,5 hasilnya jadi kaya ginih  :
    %PDF-1.3 3 0 obj <<<>>>] /Contents 4 0 R>> endobj 4 0 obj <> stream xœíœkoÛ6†¿÷Wp€$@Ëò*JÝ’·uÖ ¹-V‹ ó8¶«u­TRzù÷#EÙ¢]׉$VØ�~¨›XÌÑ{^>¤(úXüþA.À—’/CðüŒ!B œAøDýˆÀ­>D6}ò�ˆ)>¢sNÁ!8á{Ùü±+dñÝù–ùê­¿ÿ‘á§R™:øeW“J€‡a€€ðèáBÁYÿümÿô{Æ_ëÈ¿­3,=X½-›¥úeG ¥¸ñ¶I:~e” TÈ çQ±üGÁd1β(ñäó8wiò>šä`¼H–·Y<•í–`|ÿ5^Äãd“4¾ËÁ,^D°J³®uœê.“RÖ¤ àøòõñSð&<;%úGù2:Ìâ<Ÿ£4‹“åè¨ù©½Àƒ>¯N½Xœ½�óüã”O’Ň8‡wó;¶ÏöˆÎÛì©Úêêö|Èñªó ‰dv7]+c”Jm”*»Ž@ô5–

      1. udah saya cek om, dan kayanya gak ada yang aneh.
        kira-kira ada kemungkinan lain gak om ?
        maaf yah om kalo ngerepotin hehehe ^_^

      2. dah bisa om, tapi gak tau deh kaya gini bener atau engak, yang penting bisa jalan dulu aja,
        $pdf->Output(“test1.pdf”,”I”); aku ganti jadi $pdf->Output(“test1.pdf”,”D”);
        gimana tuh om ?
        makasih yah om buat tutor’y ^_^

        1. oke gpp diganti menjadi “D”. Opsi itu merupakan tujuan dimana pdf akan ditampilkan. Jika opsi “I” maka akan ditampilkan secara internal di browser, tapi browser harus ada plugin pdf-nya. Kalo “D” artinya download. Jadi, error yg terjadi kemungkinan karena browser tidak ter-integrate dengan pdf.

          Berikut ini penjelasan lengkapnya mengenai opsi tersebut:

          Destination where to send the document. It can take one of the following values:

          • I: send the file inline to the browser. The plug-in is used if available. The name given by name is used when one selects the “Save as” option on the link generating the PDF.
          • D: send to the browser and force a file download with the name given by name.
          • F: save to a local file with the name given by name (may include a path).
          • S: return the document as a string. name is ignored.
  20. makasih sharenya, kebetulan lagi mau buat aplikasi untuk cetak kuitansi dari database.
    hampir aja saya mau belajar buat pake java atau C++ 😀
    karena alasan kemudahan implementasi pada banyak client, akhirnya balik lagi ke php.. 🙂

  21. thanks atas ilmunya,,, anda banyak sekali membantu saya dalam belajar pemrograman web,, dari web ini dan dari ebook2 anada.. thanks

  22. Mau tanya Mas.. Kalo misal yang html2pdf itu file nya dari PHP bukan html dan ada databasenya bisa ndak ya mas..? Tak coba kok ndak bisa ya.. Mohon pencerahannya.. Trims…

  23. Asslamualaikum, Maaf pa sebelumnya, setelah saya coba library HTML2FPDF ko malah error ya? export ke PDF nya ga berhasil. oh iya kata bapa HTML2FPDF sendiri menggunakan library FPDF nah bagaimana cara menggabungkannya? apakah harus dalam satu folder atau terpisah? mohon maaf sebelumnya saya masih awam. trima kasih.

  24. Asslamualaikum,
    Maaf pa sebelumnya, setelah saya coba library HTML2FPDF ko malah error ya?
    export ke PDF nya ga berhasil. oh iya kata bapa HTML2FPDF sendiri menggunakan library FPDF
    nah bagaimana cara menggabungkannya? apakah harus dalam satu folder atau terpisah?
    mohon maaf sebelumnya saya masih awam.
    trima kasih.

  25. mas klo ngambil dari database. dan datanya ratusan misal. di tampilkan dengan tabel2. itu gimana? datanya kan banyak? bisa ga? dengan data yang banyak itu pasti terdiri dari beberapa halaman. mohon pencerahannya

  26. pak gimana cara ngasih perintah output dari file php yang berhubungan dg DB ke html? bingung,, maaf newbie :'(

  27. master ini cara makenya gmn sii?
    apa perlu di instal2 lagi,,?
    trus klo misalnya mau buat file baru buad di jadiin pdf gtu,,
    buadnya dalam 1 folder ato gmn master?

  28. Permisi Pak, numpang tanya, Saya make TCPDF dan menggunakan Funciton HTML, semua berjalan dengan lancar dari php Generate PDF, masalah terjadi setelah saya import data ribuan ke Mysql, waktu laporan mau dicetak, si TCPDF tidak bisa memproses seperti hank karena kelebihan data. Kalao saya coba menggunakan data yg sedikit, masih tetep bisa jalan.

    Itu bagaimana pak Solusinya?
    Mohon Pencerahannya. Terimakasih

  29. maaf bisa tolong tampilin tutorial yang jeleasnya ?
    buat yang ini saya kurang jelas, mungkin bisa ditampilkan pembuatannya jangan sample seperti ini

  30. Ass…wr…wb!. Selamat siang pak solihin, saya mau nanya nich gimana cara menggabungkan Crystal Report dengan PHP?, setahu saya CR itu paling sering berkolaborasi dengan Visual Basic 6.0, jadi gimana cara menggabungkan CR dengan PHP? terima kasih, sebelum dan sesudahnya pak!.

  31. gan mau tanya
    ane coba coding diatas kok ada error kaya gini yaa


    Deprecated: Function ereg() is deprecated in C:\xampp\htdocs\filter\html2pdf\pdf-in-php\html2fpdf\html2fpdf.php on line 460

    Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\filter\html2pdf\pdf-in-php\html2fpdf\fpdf16.php on line 1805

    Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\filter\html2pdf\pdf-in-php\html2fpdf\fpdf16.php on line 1828
    %PDF-1.3 3 0 obj endobj 4 0 obj stream xœ1oÂ0„÷üŠckc;›µiÕ „%ÄàÊi I“6¨Bý÷}Ád`±žîÎOß=‰·ˆ³DaM †©€Œs˜ŶBi¿k20{Já²*§ñë×Ù͹ÑÝø2\qruú¸«\Á&Lë¶ÌH`ÅPÜ´[õ¼‡u6 endstream endobj 1 0 obj endobj 5 0 obj endobj 6 0 obj endobj 7 0 obj endobj 2 0 obj >> endobj 8 0 obj <> http://html2fpdf.sf.net) /CreationDate (D:20130725053812) >> endobj 9 0 obj <> endobj xref 0 10 0000000000 65535 f 0000000386 00000 n 0000000774 00000 n 0000000009 00000 n 0000000087 00000 n 0000000473 00000 n 0000000569 00000 n 0000000670 00000 n 0000000882 00000 n 0000001006 00000 n trailer <> startxref 1109 %%EOF”

    mohon bantuannya 🙂

  32. wah terima kasih pak , atas ulasannya. Ini bener-bener yang saya cari, ketimbang bikin PDF pake script perbaris bikin pusing dan makan waktu yang sangat lamaa 😀
    terima kasih sekali lagi ,tetap semangat!

  33. saya sudah menggunakan fpdf,tcpdf,dompdf…semua berfungsi.
    saya ingin membuat TOC seperti pada skripsi atau tesis, dimana ada daftar isi, daftar tabel dan daftar gambar, pada daftar isi jelas behasil, nah untuk membuat TOC daftar tabel dan gambar ini yg saya sudah kewalahan, bisa membantu mas, terima kasih sebelumnya.

  34. mas, sepertinya saya ada masalah pada penggunaaan table,
    terbuart halaman kosong jika baris tabel melebihi 10, itu bagaimana ya mas..?

  35. Misi, mas. saya mau nanya kalau buat file pdf dan langsung di attch ke email gimana caranya ?
    Jadi saya lagi belajar membuat form registrasi yang nantinya setelah user klik tombol regis. Maka secara automatis file pdf terbuat dan langsung ke aalamat email user. Mohon bantuannya.

    Terima Kasih

  36. kang kok aku dapat error “Call to undefined method HTML2FPDF::DisplayPreferences() in C:\xampp\htdocs\Grande\html2fpdf\html2fpdf.php on line 155”

Leave a Reply

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