Sabtu, 20 Desember 2014

Step by Step PHP MembuatLaporan PDF dengan FPDF

Laporan PDF dengan PHP

PHP merupakansalahsatubahasapemrogramanberbasisweb yang banyakdigunakansaatini. Tidakhanyadigunakanuntukmembuatsebuah website, tetapijugauntukberbagaiaplikasidansistemberbasis web sepertisistempenjualan, sistemkeuangan, hinggasistemadministrasisekolah. Salah satubagian yang tidakterpisahkandarisebuahsistem, adalahlaporan. Dalamsebuahaplikasiberbasis web (web application), laporandapatdibuatdandisajikandalamberbagaibentuksepertilaporan PDF, laporanberbasis CSS (CSS reporting) dansebagainya. Dari berbagaipilihantersebut, laporandalambentuk PDF memilikikeunggulankarenamemiliki format standar, keamananterhadapperubahan data sertadukunganberbagai browser dansistemoperasidalammembuka file PDF.
Dalam tutorial iniakandibahasmengenaibagaimanamembuatlaporan PDF dengan PHPmenggunakan library FPDF. FPDF (http://fpdf.org) merupakansalahsatu library PHP yang memungkinkanuntukmembuat / generate file PDF secaralangsungdari PHP (on-the-fly) tanpaharusmenginstallataumengaktifkanmodul PHP tertentu (sepertiPDFLib). Tutorial iniakandiawalidenganpenjelasansingkatmengenai FPDF besertakeunggulannya, laludilanjutkandengancontohsederhanapenggunaan FPDF untukmeng-generate file PDF. Setelahituakandibahasmengenaicontohmembuatlaporansederhanadimanadatanyadiambildari database MySQL. Di bagianakhir tutorial, akandisertakansumberdanreferensiterkaitdengan tutorial ini.
Apaitu FPDF?
Sepertisudahdisebutkan di atas, FPDF merupakansuatukumpulan class (library) PHP yang memungkinkanpenggunanyadapatmembuathalaman PDF denganmudahdantanpaperlumenginstallmodultambahan. Fdarinama FPDF merupakansingkatandariFree, jadi FPDF dapatdidownload, digunakandandikembangkansecarabebas. FPDF dapatdidownloadsecara gratis di http://fpdf.org/en/download.phpbesertadokumentasilengkapnya di http://fpdf.org/en/doc/index.php. Tersediajugadokumentasidalambahasa Indonesia.
Berikutinibeberapakelebihandari FPDF yang terdapat di situsresminya, http://fpdf.org, adalah:
  • Choice of measure unit, page format and margins
  • Page header and footer management
  • Automatic page break
  • Automatic line break and text justification
  • Image support (JPEG, PNG and GIF)
  • Colors
  • Links
  • TrueType, Type1 and encoding support
  • Page compression
Download danInstalasi FPDF
FPDFdapatdidownload di situsresminya di http://fpdf.org/en/download.php. Setelah download selesai, ekstrak file FPDF di document-root komputerAnda. Letakkan library FPDF pada folder khusus yang terpisahdengan file aplikasi agar lebihmudahdalampengaturannya. Sepertisudahdisebutkan di atas, FPDF merupakansebuah library yang tidakmemerlukan proses instalasi, cukupdipanggil (include) di program. Seluruh program dalamtutorial inisudahdicobadanmenggunakan FPDF versi 1.6.
Hello World! SebuahContohSederhana
Contohsederhanauntukmembuat file PDF melalui PHP dengan library FPDF dapatdilihatpada program berikutini.
http://achmatim.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png http://achmatim.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png http://achmatim.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif 
1.  <?php
2.  require('fpdf16/fpdf.php');
3.   
4.  $pdf = new FPDF();
5.  $pdf->AddPage();
6.  $pdf->SetFont('Arial','B',16);
7.  $pdf->Cell(40,10,'Hello World!');
8.  $pdf->Output();
9.  ?>
Penjelasan program
  • Baris 2. Menyertakan file library FPDF. Jika library disimpan di dalam folder tertentu, sertakannamafoldernya. Fungsirequire() di atasdapatdigantidengan include(), include_once() maupunrequire_once() (Lihatmanual PHPuntukketeranganlebihlanjutmengenaifungsitersebut).
  • Baris 4. Membuat object barubernama $pdf dari class FPDF(). Denganterbentuknya object tersebut, makakonstruktordari class FPDF akanotomatisdijalankan. Konstruktorantara lain mengaturorientasikertas, ukurankertas (paper size) dansatuanukurankertas. Sebagaicontohlain, jikakitainginmembuathalaman FPDF denganukurankertas Letter, orientasiLanscape, dansatuanukurankertasdalamcentimetres (cm) makapembentukan object menjadi $pdf = new FPDF(‘L’, ‘cm’, ‘Letter’).
  • Baris 5. FungsiAddPage() digunakanuntukmembuathalaman PDF baru (insert new page). Jikadiinginkansuatuhalamandenganukuranmaupunorientasiberbeda, makadapatditambahkan parameter di fungsiini. ContohnyaAddPage(‘P’, ’A4’)
  • Baris 6. FungsiSetFont() digunakanuntukmengatur font tulisan yang akanditampilkan. Dalam program diatasdiatur font tulisansebagai Arial, ukuran 16 danhuruftebal (bold).
  • Baris 7. FungsiCell() digunakanuntukmenampilkansuatu text di halaman. Text akanditampilkandenganukuransesuai yang sudahdiaturdenganSetFont(). Parameter yang dapatdisertakandalamfungsi Cell() secaraberurutanadalahlebar cell, tinggi cell, text yang akanditampilkan, border cell, pilihanpindahbarissetelah cell, perataan text, isidari cell danterakhirpilihanuntukmenambahkan link pada text.
  • Baris 8. FungsiOutput() digunakanuntukmenampilkanataumeng-generate halaman PDF. Kita jugadapatmenentukannama file dan target output dari PDF yang dihasilkan. Target dapatke file, browser atau download.
MembuatLaporan PDF dari MySQL
Padacontohselanjutnya, kitaakanmembuatlaporan PDF dalambentuktabel, dimana data diambildari database, dalamhalini MySQL. Untukitu, sebelummencoba program berikutini, pastikanbahwa database dantabelsudahdibuat. Sebagaicontoh, akandigunakantabeldengannama ‘mhs’dan field nim, nama, alamatdantgllahir. Di tutorial ini, tidakakandibahasmengenaibagaimanamembuattabeltersebut, namunAndadapatmemanfaatkan tools MySQL Front atauPHPMyAdminuntukmempermudah. Pelajarikembalibeberapatutorial tentangadministrasi database MySQL di Achmatim.Net.
http://achmatim.net/wp-content/plugins/wp-synhighlight/themes/default/images/code.png http://achmatim.net/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png http://achmatim.net/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif 
1.  <?php
2.  //koneksike database
3.  $host = "localhost";
4.  $user = "root";
5.  $pass = "";
6.  $dbnm = "dbmahasiswa";
7.   
8.  $conn = mysql_connect($host, $user, $pass);
9.  if ($conn) {
10.  $open = mysql_select_db($dbnm);
11.  if (!$open) {
12.         die ("Database tidakdapatdibukakarena ".mysql_error());
13.  }
14.} else {
15.  die ("Server MySQL tidakterhubungkarena ".mysql_error());
16.}
17.//akhirkoneksi
18. 
19.#ambil data di tabeldanmasukkanke array
20.$query = "SELECT * FROM mhs ORDER BY nama";
21.$sql = mysql_query ($query);
22.$data = array();
23.while ($row = mysql_fetch_assoc($sql)) {
24.  array_push($data, $row);
25.}
26. 
27.#setting judullaporandan header tabel
28.$judul = "LAPORAN DATA MAHASISWA";
29.$header = array(
30.         array("label"=>"NIM", "length"=>30, "align"=>"L"),
31.         array("label"=>"NAMA", "length"=>50, "align"=>"L"),
32.         array("label"=>"ALAMAT", "length"=>80, "align"=>"L"),
33.         array("label"=>"TGL LAHIR", "length"=>30, "align"=>"L")
34.  );
35. 
36.#sertakan library FPDF danbentukobjek
37.require_once ("fpdf16/fpdf.php");
38.$pdf = new FPDF();
39.$pdf->AddPage();
40. 
41.#tampilkanjudullaporan
42.$pdf->SetFont('Arial','B','16');
43.$pdf->Cell(0,20, $judul, '0', 1, 'C');
44. 
45.#buat header tabel
46.$pdf->SetFont('Arial','','10');
47.$pdf->SetFillColor(255,0,0);
48.$pdf->SetTextColor(255);
49.$pdf->SetDrawColor(128,0,0);
50.foreach ($header as $kolom) {
51.  $pdf->Cell($kolom['length'], 5, $kolom['label'], 1, '0', $kolom['align'], true);
52.}
53.$pdf->Ln();
54. 
55.#tampilkan data tabelnya
56.$pdf->SetFillColor(224,235,255);
57.$pdf->SetTextColor(0);
58.$pdf->SetFont('');
59.$fill=false;
60.foreach ($data as $baris) {
61.  $i = 0;
62.  foreach ($baris as $cell) {
63.         $pdf->Cell($header[$i]['length'], 5, $cell, 1, '0', $kolom['align'], $fill);
64.         $i++;
65.  }
66.  $fill = !$fill;
67.  $pdf->Ln();
68.}
69. 
70.#output file PDF
71.$pdf->Output();
72.?>
Berikutinipenjelasandari program diatas:
  • Baris 2-17. Koneksidengan server MySQL danmembuka database yang digunakandalam program. Lakukanperubahan $host, $user, $pass dan $dbnmsesuaidengankondisikomputer yang Andagunakan.
  • Baris 19-25. Mengambil data dari database yang akanditampilkan di laporandanmasukkankesebuah array $data. Padabaris 20 perintah query untukmengambil data didefinisikandanpadabarisberikutnyaperintah query tersebutdijalankandenganmenggunakanfungsimysql_query(). Selanjutnyauntuksetiapbaris yang dihasilkandariperintah query tersebut, masukkanke array $row denganfungsimysql_fetch_assoc()dantambahkanke array $data denganfungsiarray_push().
  • Baris 27-34. Menyusun array yang akanmembentuk header tabeldarilaporan. Jumlahelemendari array header yang dibentukharuslahsamadenganjumlahkolomdari array $data. Di dalam array $header jugadiaturukuran / lebarkolomdanperataandarikolom.
  • Baris 36-39. Panggil library FPDF, bentuk object dari class FPDF danbuathalamanbaru (fungsiAddPage()).
  • Baris 41-43. Menampilkanjudullaporan yang sudahdiatursebelumnya.
  • Baris 45-53. Menampilkanjudul / header tabellaporansesuaidengan header yang telahditentukansebelumnya. Dalam program diatasdiatur agar text dari header tabelberwarnaputih (baris 48), background berwarnamerah (baris 47), border cell berwarnaRGB(128,0,0) (baris 49) dan font text adalah Arial ukuran 10 (baris 47).
  • Baris 55-68. Menampilkan data daritabelberdasarkanisivariabel array $data yang diambildari database. Di bagianini, sebelum data ditampilkanjugadiaturwarna text dan background.
  • Baris 71. Hasildarihalaman PDF akanditampilkan di browser.
Hasildari program tersebutsebagaiberikut:


Kesimpulan
PHP memilikikemampuan yang sangatbaikdalammembuat file PDF on-the-fly. FPDF merupakansalahsatu library PHP yang dapatdigunakanuntukmembuatlaporanmaupundokumen PDF lainnyasecaramudah, tanpaperlumenginstallataumengaktifkanmodultertentu. Laporan PDF yang dihasilkanjugamemilikitampilan yang baikdanberkualitas.
Semoga tutorial inibermanfaat

Tidak ada komentar:

Posting Komentar