Home > PHP > Membuat Laporan(Report) dg FPDF, Html2FPDF & Html2PDF

Membuat Laporan(Report) dg FPDF, Html2FPDF & Html2PDF

Apa itu fpdf, html2fpdf & html2pdf?

Secara umum fpdf, html2fpdf, dan html2pdf adalah library dari PHP untuk membuat file PDF. hal ini sangat berguna jika kita membangun sistem reporting. PDF(Portable Document File) merupakan file yang bisa di baca di semua OS. jadi inilah alasannya kenapa memakai PDF untuk reporting.

Gak usah banyak cas-cis-cus langsung aja saya berikan contoh dari ke-3 library di atas.

1. FPDF


<?php
 include 'fpdf.php' ;
 mysql_connect('localhost','root','');
 mysql_select_db('dbrutan');
 $bulan = $_POST['bln'];
 $tahun = $_POST['thn'];
 $sql = "SELECT * FROM napi a JOIN dtpenghuni b ON a.id_penghuni = b.id_penghuni WHERE status = 'Bebas' AND EXTRACT(MONTH FROM tgl_bebas)= '$bulan' AND EXTRACT(YEAR FROM tgl_bebas)= '$tahun' ORDER BY id_napi DESC";

$qry=mysql_query($sql) or die (mysql_error());
 define('FPDF_FONTPATH','font/');

$pdf=new FPDF('L','mm','A4');
 $pdf->Open();
 $pdf->SetAutoPageBreak(false);
 $pdf->AddPage();
 $pdf->SetFont('Arial','B',12);
 $pdf->Cell(100,6,'KEMENTERIAN HUKUM DAN HAM RI',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'KANTOR WILAYAH JAWA TIMUR',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'RUMAH TAHANAN NEGARA BANGKALAN',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'JL. PERTEMPURAN NO.21 BANGKALAN',0,0,'C');
 $pdf->Ln();
 $pdf->Cell(100,6,'TELEPON : (031)3095014',0,0,'C');
 $pdf->Ln();
 $pdf->Text(160,25,'DAFTAR : Narapidana yang telah dilepaskan/dibebaskan',0);
 $pdf->Ln();
 $pdf->Text(181,31,"dari Rumah Tahanan Negara Bangkalan",0);
 $pdf->Ln();
 $bln = date("F", mktime(0, "$bulan"));
 $pdf->Text(181,37,"Dalam bulan $bln $tahun",0);

$y_axis_initial = 45;
 $pdf->SetFont('Arial','',10);
 $pdf->setFillColor(222,222,222);
 $pdf->SetY($y_axis_initial);
 $pdf->SetX(10);
 //Header tabel halaman 1
 $pdf->CELL(10,6,'NO',1,0,'C',1);
 $pdf->Cell(40,6,'NAMA',1,0,'C',1);
 $pdf->Cell(15,6,'GOL',1,0,'C',1);
 $pdf->Cell(15,6,'P/W',1,0,'C',1);
 $pdf->Cell(15,6,'UMUR',1,0,'C',1);
 $pdf->Cell(37,6,'PUTUSAN DARI',1,0,'C',1);
 $pdf->Cell(25,6,'PERKARA',1,0,'C',1);
 $pdf->Cell(30,6,'ASAL PENYIDIK',1,0,'C',1);
 $pdf->Cell(30,6,'TGL BEBAS',1,0,'C',1);
 $pdf->Cell(40,6,'ALAMAT',1,0,'C',1);
 $pdf->Cell(25,6,'KET PIDANA',1,0,'C',1);
 $pdf->Ln();
 $max=25;//max baris perhalaman
 $i=0;
 $no=0;
 $row_height = 6;//tinggi tiap2 cell/baris
 $y_axis = $y_axis + $row_height;
 $date = date("Y-m-d");

while($row = mysql_fetch_array($qry))
 {
 $no++;
 $selisih = strtotime($date) -  strtotime($row[tgl_lahir]);
 $umur = intval($selisih/(60*60*24)/365);
 if ($i == $max){               //jika $i=25 maka buat header baru seperti di atas
 $pdf->AddPage();
 $pdf->SetY(10);
 $pdf->SetX(10);
 $pdf->CELL(10,6,'NO',1,0,'C',1);
 $pdf->Cell(40,6,'NAMA',1,0,'C',1);
 $pdf->Cell(15,6,'GOL',1,0,'C',1);
 $pdf->Cell(15,6,'P/W',1,0,'C',1);
 $pdf->Cell(15,6,'UMUR',1,0,'C',1);
 $pdf->Cell(37,6,'PUTUSAN DARI',1,0,'C',1);
 $pdf->Cell(25,6,'PERKARA',1,0,'C',1);
 $pdf->Cell(30,6,'ASAL PENYIDIK',1,0,'C',1);
 $pdf->Cell(30,6,'TGL BEBAS',1,0,'C',1);
 $pdf->Cell(40,6,'ALAMAT',1,0,'C',1);
 $pdf->Cell(25,6,'KET PIDANA',1,0,'C',1);

$pdf->SetY(10);
 $pdf->SetX(25);
 $y_axis = $y_axis + $row_height;
 $i=0;
 $pdf->Ln();
 }
 //tampilkan data daari database
 $pdf->Cell(10,6,$no,1);
 $pdf->Cell(40,6,$row[nama],1);
 $pdf->Cell(15,6,$row[jenis_napi],1);
 $pdf->Cell(15,6,$row[jk],1);
 $pdf->Cell(15,6,$umur,1);
 $pdf->Cell(37,6,$row[srt_putusan],1);
 $pdf->Cell(25,6,$row[pasal],1);
 $pdf->Cell(30,6,$row[asal_penyidik],1);
 $pdf->Cell(30,6,$row[tgl_bebas],1);
 $pdf->Cell(40,6,$row[alamat],1);
 $pdf->Cell(25,6,'',1);
 $pdf->Ln();
 $i++;
 }

//buat footer
 $now = date("d F Y");
 $pdf->Ln(10);
 $pdf->SetFont('Arial','B',12);
 $pdf->Cell(400,6,"Bangkalan, Tgl  $now",0,0,'C');
 $pdf->Ln();
 $pdf->Cell(404,6,"Kepala Rutan Bangkalan",0,0,'C');
 $pdf->Ln(30);
 $pdf->SetFont('Arial','U',12);
 $pdf->Cell(404,6,"BAMBANG HARYANTO,Bc.IP.SH.M.Hum",0,0,'C');
 $pdf->Ln();
 $pdf->SetFont('Arial','',12);
 $pdf->Cell(404,6,"NIP. 19661018 1992 03 1001",0,0,'C');
 $pdf->Ln();
 $pdf->Output('Napi_bebas_'.date("F Y").'.pdf', 'I');
 ?>

Jika ada yang kurang atau menambahkan silahkan comment

2. Html2FPDF


<?
 require('html2fpdf.php');
 $pdf=new HTML2FPDF();
 $pdf->AddPage();

//Isi PDF akan  ditampung/disimpan di variable $content
 $content = "Ini akan dicetak ke pdf
 <table border='1'>";
 for ($i=1;$i<=100;$i++){
 $content .= "<tr><td>1</td><td>Nama 1</td><td>Jakarta</td></tr>
 <tr><td>2</td><td>Nama 2</td><td>Semarang</td></tr>";
 }

$content .="</table>";
 $pdf->WriteHTML($content);
 $pdf->Output("coba.pdf","I");
 ?>

3. Html2PDF

Pertama kita buat file msf.php, file ini berisi halaman html yang akan kita konversi ke PDF. Setau saya Html2PDF mendukung CSS sementara Html2FPDF tidak


<page style="font-size: 12pt">
 <?
 session_start();
 mysql_connect('localhost','root','');
 mysql_select_db('dbkapal');

$qry = mysql_query("select tugboat_name, cargo_id, barge_name, no_ship, nama_rute, act_date, tot_cargo,voy from kapal a,rute b, bcr c, aktifitas d where c.id_kapal = a.id_kapal and c.id_rute = b.id_rute and d.id_bcr = c.id_bcr and attr ='complete_dish' order by barge_name ASC");

echo "<h3 align=center>Monthly Statemet of Fact</h3>
 <table border=1 align=center>
 <tr><td bgcolor='#999999'><strong>No</strong></td>
 <td bgcolor='#999999'><strong>Tugboat Name</strong></td>
 <td bgcolor='#999999'><strong>Barge Name</strong></td>
 <td bgcolor='#999999'><strong>Cargo ID</strong></td>
 <td bgcolor='#999999'><strong>No.Shipment</strong></td>
 <td bgcolor='#999999'><strong>Voy</strong></td>
 <td bgcolor='#999999'><strong>Port of Dish</strong></td>
 <td bgcolor='#999999'><strong>Compl.Dish</strong></td>
 <td bgcolor='#999999'><strong>Ttl Cgo(MT)</strong></td>
 </tr>";

$no=1;
 while($r = mysql_fetch_array($qry)){
 echo "<tr>
 <td>$no</td>
 <td>$r[0]</td>
 <td>$r[2]</td>
 <td>$r[1]</td>
 <td align='right'>$r[3]</td>
 <td align='right'>$r[7]</td>
 <td>".substr($r[4],0,16)."</td>
 <td>".substr($r[5],0,16)."</td>
 <td align='right'>".number_format($r[6])."</td>
 </tr>";
 $no++;
 }
 echo "</table>";
 ?>
 </page>

Selanjutnya kita buat file msf_pdf.php


ob_start();
 include(dirname(__FILE__).'/msf.php');
 $content = ob_get_clean();

// conversion HTML => PDF
 require_once(dirname(__FILE__).'/html2pdf.class.php');
 try
 {
 $html2pdf = new HTML2PDF('L','A4', 'fr', false, 'ISO-8859-15');
 $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
 $html2pdf->Output('msf.pdf');
 }
 catch(HTML2PDF_exception $e) { echo $e; }

Nah, dari 3 contoh library di atas. Yang manakah yang paling anda suka?

  1. arif b s
    6 July 2011 at 11:05

    mbak klau baca koment ini balas ya…
    klau buat pdf untuk invoice gimana… enak pake apa ya… bisa di kasih contoh … please

  2. 6 July 2011 at 18:01

    coba aja mas ke-3 librar diatas
    saya belum pernah nyoba

  3. arif b s
    14 July 2011 at 08:00

    Aku dah membuat laporan invoice dlm bentuk html kmd ak jalanin lib html2pdf versi. html2pdf_v4.03_php5

    =========================AL HASIL errornya Spt ini=============================
    ERREUR n°1
    Fichier : C:\AppServ\www\webku\html2pdf\html2pdf.class.php
    Ligne : 1251

    La balise n’existe pas encore.

    Si vous voulez la rajouter, vous devez créer les méthodes o_CENTER (pour l’ouverture) et c_CENTER (pour la fermeture) en suivant le modèle des balises existantes.

    De plus, si vous créez ces méthodes, n’hésitez pas à en faire profiter tout le monde en m’écrivant sur webmaster@html2pdf.fr afin qu’elles se retrouvent dans la prochaine version d’HTML2PDF.

  4. 15 July 2011 at 02:00

    error nya kog bahasa gt ya mas?
    coba download yg bahasa ingrris mas di http://html2pdf.fr/en/download
    jgn lupa penempatan direktori juga diperhatikan

    dan halaman yg mau dibuat pdf harus berada di antara tag
    jgn kasih tag2 ato

  5. arif b s
    20 July 2011 at 08:06

    ketika ak running dengan laporan html biasa (tanpa php script/javascript) bisa di convert ke pdf secara baik..
    tapi ketika ak memakai laporan html yg berhubungan dengan database akan timbul error spt diatas. saya juga sdh download html2pdf spt yg disarankan di atas… apa emang html2pdf belum support???
    spt ini codingnya utk pemanggilan

    setDefaultFont(‘Arial’);
    $html2pdf->writeHTML($content, isset($_GET[‘vuehtml’]));
    $html2pdf->Output(‘Laporanpdfku.pdf’);
    }
    catch(HTML2PDF_exception $e) { echo $e; }
    ?>

    • 25 July 2011 at 07:31

      mas arif dalam html2pdf, semua script harus berada di antara tag [page] …………[/page] (sperti pada file msf.php di atas );
      tidak boleh ada script yg ditulis sebelumnya di atas ato dibawah tag tsb
      coba aja contoh di atas di running
      klo bisa berarti tdk ada maslah dgn library anda

  6. 29 November 2011 at 01:48

    Mbak, sebelumnya thanks dl buat pencerahannya. aku udah coba tp pas dijalankan muncul error kayak gini:
    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 393216 bytes) in C:\AppServ\www\pjudistakor\html2pdf\_tcpdf_5.0.002\unicode_data.php on line 1125

    Kira2 salah dimananya ya?

    • azmy
      23 October 2013 at 09:24

      coba pakek xammp versi terbaru

  7. 15 March 2012 at 16:18

    mba trima kasih ya.. tutor ya keren bgt… : )

  8. love
    26 March 2012 at 01:49

    Makasih bos info nya :*

  9. 9 October 2012 at 03:59

    Library yang paling baru yang digunakan adalah tcpdf ..
    buat nya simple .. (dan bisa langsung digabung di CI),

    contoh :
    http://modije.in/blog/?p=9

  10. 20 October 2012 at 06:30

    Greetings from Colorado! I’m bored at work so I decided to check out your website on my iphone during lunch break. I love the knowledge you present here and can’t wait to take a look
    when I get home. I’m amazed at how quick your blog loaded on my phone .. I’m not even
    using WIFI, just 3G .. Anyways, fantastic site!

  11. 20 November 2012 at 13:47

    Hai. Pas aku coba keluar failed to load PDF document. Kenapa ya :/

    • 26 November 2012 at 06:37

      Di contoh yang ke berapa?

  12. 19 February 2013 at 14:34

    Kalau datanya dari beberapa tabel, misal 3 tabel. Gimana penerapannya ya mbak?
    Terima kasih sebelumnya.

  13. dielz
    19 November 2013 at 06:42

    untuk pencerahan di posting aja ke bentuk video kayanya lbih good job 🙂

  14. indramustholih
    23 June 2015 at 11:04

    gan kalo html2pdf langkah pertama di simpennya dimana ? controller ?

  1. No trackbacks yet.

Leave a reply to ramoreez Cancel reply