Sabtu, 17 Mei 2014

Mencetak Report Web PDF Format Tabel, Word Wrap, Merge Cell, Background Warna, Border dan Justify dengan PHP TCPDF

Mencetak Report Web PDF Format Tabel, Word Wrap, Merge Cell, Background Warna, Border dan Justify dengan PHP TCPDF
Mencetak Report Web PDF Format Tabel, Word Wrap, Merge Cell, Background Warna, Border dan Justify dengan PHP TCPDF kelihatannya mudah. Anda dapat menggunakan berbagai library untuk mencetak report seperti FPDF, EzPDF, TCPDF dan sebagainya. Anda dapat memperoleh FPDF di website ini, sedangkan EzPDF ada di disini, dan TCPDF dapat didownload disini.

Tetapi ternyata dari berbagai library tersebut yang mendukung pencetakan PDF dengan format HTML, yang artinya kita menulis HTML kemudian akan digenerate menjadi PDF secara mudah dan lengkap adalah TCPDF. Dalam hal ini sangat menguntungkan jika kita menulis format laporan yang akan dikonversi ke PDF dalam bentuk HTML dengan Tabel tag <table>.


Kenapa kita pilih tag <table>, karena table pada HTML mempunyai kemampuan memformat tulisan dalam bentuk yang sudah terbagi-bagi menjadi baris atau kolom, dan mampu di-merge cell, atau digabung antar kolom atau baris tertentu. Dan hebatnya fitur WriteHTML di TCPDF mampu membaca atribut align dan valign, sehingga tulisan mampu mepet ke atas, bawah, kanan atau kiri serta cellpadding, cellspacing dan border. Belum cukup sampai disitu, TCPDF ternyata juga mendukung CSS Inline, yaitu css yang langsung diketikkan di tag HTML, dalam hal ini di tag <td> atau kolom (cell) pada tabel, dimana yang didukung meliputi align-text yaitu left, right, center atau justify. Kemudian didukung pula CSS background-color yang menyebabkan kita mampu mewarnai background masing-masing cell di dalam tabel.

Berikut ini fitur HTML yang penulis coba dan bekerja di fungsi WriteHTML() pada TCPDF :
1. <table> border, cellspacing, cellpadding.
2. <td> align, valign
3. <td> style= border, border-bottom, border-top, dsb. text-align, background-color.
4. <img src=".."/>
Contoh selengkapnya dapat anda lihat di kode program di bawah ini.

Kemampuan lain yang juga kita pakai di bawah ini adalah menampilkan gambar di file cetak pdf yang dapat dilakukan semudah menuliskan tag image HTML yaitu <img src=".."/>.

Untuk mempraktekkannya silakan download dahulu library TCPDF dari website resminya disini. Kemudian extract folder "tcpdf" di dalamnya dan masukkan di dalam folder web anda. Dalam hal ini penulis menggunakan XAMPP sehingga penulis extract misalnya di folder xampp/htdocs/print-pdf-tabel-merge-cell-word-wrap-tcpdf/tcpdf.

Kemudian penulis buat file, misalnya dengan nama index.php, sehingga ada di ditektori xampp/htdocs/print-pdf-tabel-merge-cell-word-wrap-tcpdf/index.php. Kemudian ketikkan kode program berikut ini :

<?php
// http://cariprogram.blogspot.com
// nuramijaya@gmail.com
require_once('tcpdf/tcpdf.php');
//Page orientation (P=portrait, L=landscape).

$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);

//$pdf->SetFont('dejavusans', '', 10);
$pdf->SetFont('times', '', 10);

$pdf->setHeaderData('',0,'','',array(0,0,0), array(255,255,255) );  

$pdf->SetPrintHeader(false);
$pdf->SetPrintFooter(false);

$pdf->AddPage();

// writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='')
// writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $reseth=true, $align='', $autopadding=true)

$html = '
<h1>Biodata</h1>
<table width="500" border="1" cellspacing="0" cellpadding="3">
  <tr>
    <td width="103">Nama</td>
    <td width="200">Nur Amijaya</td>
    <td width="171" rowspan="5"><img src="tcpdf/examples/images/tiger.ai" alt="test alt attribute" width="100" height="100" border="0" /></td>
  </tr>
  <tr>
    <td valign="top">Alamat</td>
    <td>Jl. Kaliurang Km. 13 Sleman Yogyakarta <br />
    55281</td>
  </tr>
  <tr>
    <td>No Telp</td>
    <td>089999999999</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td style="border-right: 1px solid white;border-top: 1px solid white;border-bottom: 1px solid black;">0274444444</td>
  </tr>
  <tr>
    <td colspan="2">&nbsp;</td>
  </tr>
</table><br/><br/>
<table width="500" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td width="103">Nama</td>
    <td width="200" style="border-left: 1px solid black;border-top: 1px solid black;">Nur Amijaya</td>
    <td width="171" rowspan="5"><img src="tcpdf/examples/images/tiger.ai" alt="test alt attribute" width="100" height="100" border="0" /></td>
  </tr>
  <tr>
    <td valign="top">Alamat</td>
    <td style="border-left: 1px solid black;background-color: yellow;text-align: justify;">Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta 55281. Jl. Kaliurang Km. 13 Sleman Yogyakarta <br />
    55281</td>
  </tr>
  <tr>
    <td>No Telp</td>
    <td style="border-left: 1px solid black;text-align: right;">089999999999</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td style="border-left: 1px solid black;border-bottom: 1px solid black;text-align: center;">0274444444</td>
  </tr>
  <tr>
    <td colspan="2">&nbsp;</td>
  </tr>
</table>';

$pdf->writeHTML($html, true, false, true, false, '');

$pdf->lastPage();

$pdf->AddPage();

$html = '
<h1>Halaman 2</h1>';

$pdf->writeHTML($html, true, false, true, false, '');

$pdf->lastPage();

//$pdf->Output('print.pdf', 'F');
$pdf->Output('print.pdf', 'I');
?>
 Hasilnya dapat ada panggil dari Browser Web, dalam hal ini penulis memanggil dengan URL : http://localhost/print-pdf-tabel-merge-cell-word-wrap-tcpdf/index.php, hasilnya sebagai berikut :

Mencetak Report Web PDF Format Tabel, Word Wrap, Merge Cell, Background Warna, Border dan Justify dengan PHP TCPDF

Project selengkapnya dapat anda download disini. Jika kesulitan dalam mengunduh, caranya ada disini.

Semoga berguna :D


2 komentar:

  1. keren mas pencerahannya..

    mas jika HTML nya saya pakai Php apa bisa mas...
    tujuan saya agar bisa kirim ke netbeans untuk di lisview misal apk android

    maff mas pemula bgt

    BalasHapus
  2. kalo mau nampilin data dari database gimana?
    mkasih.

    BalasHapus