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?
Categories: PHP
Basis Data, basisdata, CSS, Database, FPDF, HTML, HTML2FPDF, HTML2PDF, LAPORAN, MySQL, PDF, PDF REPORT, PHP, programming, query, sourcecode, SQL, web
mbak klau baca koment ini balas ya…
klau buat pdf untuk invoice gimana… enak pake apa ya… bisa di kasih contoh … please
coba aja mas ke-3 librar diatas
saya belum pernah nyoba
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.
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
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; }
?>
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
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?
coba pakek xammp versi terbaru
mba trima kasih ya.. tutor ya keren bgt… : )
Makasih bos info nya :*
sama2
Library yang paling baru yang digunakan adalah tcpdf ..
buat nya simple .. (dan bisa langsung digabung di CI),
contoh :
http://modije.in/blog/?p=9
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!
Hai. Pas aku coba keluar failed to load PDF document. Kenapa ya
Di contoh yang ke berapa?
Kalau datanya dari beberapa tabel, misal 3 tabel. Gimana penerapannya ya mbak?
Terima kasih sebelumnya.
untuk pencerahan di posting aja ke bentuk video kayanya lbih good job 🙂
gan kalo html2pdf langkah pertama di simpennya dimana ? controller ?