Dynamic Blinkie Text Generator at TextSpace.net

Feedburner

I heart FeedBurner

Minggu, 16 Juli 2017

PDFlib

PDF (Portable Document Format) adalah format file yang dikembangkan oleh Adobe Systems yang ditujukan untuk pendistribusian dokumen yang tidak bergantung pada platform dan aplikasi asal pembuatnya. Dengan kata lain format yang disimpan dengan format PDF tidak akan berubah walaupun dilihat ataupun dicetak pada sistem dan platform yang berbeda.
Dalam aplikasi bisnis misalnya, kita sering harus menyajikan laporan dinamik yang merupakan hasil query database. Jika Anda dapat membuat dokumen PDF secara on-the-fly, tentunya ini akan sangat mengasyikkan karena tampilan laporan dapat menjadi menarik dibandingkan format teks polos atau HTML biasa. Untuk dapat membuat dokumen PDF secara on-the-fly Anda membutuhkan library khusus untuk menangani proses tersebut. Paket aplikasi PHP sudah menyediakan 2 library yang menangani proses pembuatan dokumen PDF ini yaitu CPDF dan PDFLib. Pada artikel ini penulis akan membahas penggunaan library PDFLib untuk pembuatan dokumen PDF.

Instalasi

Berikut adalah aplikasi yang dibutuhkan: Apache (webserver) dan PHP 4.1.1 ke atas. Sistem operasi yang digunakan oleh penulis adalah Windows 2000. Untuk webserver Anda dapat menggunakan IIS tapi setting yang harus dilakukan akan berbeda dengan yang disajikan pada artikel ini.
Setelah webserver Apache terinstal pada komputer Anda, maka selanjutnya lakukanlah ektraksi file paket PHP ke suatu direktori—sebaiknya letakkan PHP dengan nama direktori sesederhana mungkin, misalnya e:\php.
Agar Apache dapat mengenali file berekstensi .php sebagai skrip PHP maka lakukan langkah berikut. Pertama, bukalah file httpd.conf di direktori <apache webserver>/conf/httpd.conf, di mana <apache webserver> adalah direktori root Apache Anda. Setelah itu, pada bagian LoadModule tambahkan baris berikut:
 LoadModule php4_module e:/php/sapi/php4apache.dll
Ganti e:/php dengan direktori tempat Anda mengekstraksi PHP sebelumnya. Lalu pada bagian AddType tambahkan baris berikut:
AddType application/x-httpd-php .php
Selanjutnya lakukan setup pada PHP. Pada direktori PHP ubah file php.ini-dist menjadi php.ini kemudian pindahkan ke direktori Windows (mis: c:\winnt). Pindahkan juga file php4ts.dll dan pdflib.dll yang ada di subdirektori dlls ke direktori <Windows>/System pada Win9x atau <Windows>/System32 pada WinNT/2000, di mana <Windows> adalah direktori Windows Anda.
Setelah itu bukalah file php.ini (yang sebelumnya telah Anda pindahkan ke diretori Windows). Ubah variabel extension_dir seperti berikut:
extension_dir = e:/php/extensions
Seperti biasa, ganti e:/php dengan direktori PHP Anda. Carilah baris di bawah lalu hilangkan komen (titik koma yang terletak di awal baris), sehingga tampak menjadi:
extension=php_pdf.dll
Instalasi selesai dan service Apache Webserver dapat dijalankan. Apache dapat distart melalui link dari Start > Programs > Apache http Server atau melalui fasilitas Services dari Windows NT/2000.
Bila perlu Anda dapat mengetes apakah modul PDFLib telah diload baik dengan cara membuat sebuah file PHP seperti berikut:
<?
phpinfo();
?>
Lihat Gambar 1 untuk melihat bagian output dari phpinfo() yang menunjukkan bahwa modul pdf telah terinstal dengan baik.

Hello World

Untuk mengenal pembuatan dokumen PDF kita akan membuat sebuah dokumen sederhana yang dapat menggambarkan proses dasar yang harus dilakukan dalam pembuatannya.
<?php
$p =PDF_new();
PDF_open_file($p,"");
PDF_begin_page($p,595,842);
$font =PDF_findfont($p,"Helvetica-Bold","host",0);
PDF_setfont($p,$font,18.0);
PDF_set_text_pos($p,50,700);
PDF_show($p,"Hello world!");
PDF_continue_text($p,"Hello World Line 2");
PDF_end_page($p);
PDF_close($p);
$buf =PDF_get_buffer($p);
$len =strlen($buf);
header("Content-type:application/pdf");
header("Content-Length:$len");
header("Content-Disposition:inline;filename=hello_php.pdf");
print $buf;
PDF_delete($p);
?> 
Pada awal program fungsi PDF_new akan membuat objek dokumen PDF dengan setting default. Nilai kembali dari fungsi ini yang disimpan pada variable $p akan digunakan terus oleh semua fungsi PDFLib lain yang berhubungan dengan pembuatan dokumen PDF.
Setelah objek dokumen PDF dibentuk maka pembuatan file PDF dapat dimulai dengan memanggil fungsi PDF_open_file. Argumen kedua diisi dengan dengan string kosong karena dokumennya hanya akan disimpan sebagai stream dalam memori yang nantinya diteruskan ke browser. Bila Anda ingin menyimpannya sebagai file argumen kedua diisi nama file hasil akhir.
Pada tahap ini Anda telah memiliki dokumen blank yang siap dibentuk halaman-halamannya. Untuk pembuatan tiap halaman Anda harus menggunakan fungsi PDF_begin_page pada awal halaman dan PDF_end_page pada akhir halaman. Argumen kedua dan ketiga merupakan resolusi halaman, lihat Tabel 1 untuk mengetahui padanannya dalam ukuran kertas yang lazim kita gunakan.
Sebelum Anda dapat menulis teks, perlu diset terlebih dahulu font yang akan digunakan. Font yang akan digunakan perlu dicari terlebih dahulu dengan fungsi PDF_findfont. Argumen kedua adalah nama font yang akan Anda gunakan, PDFLib dapat pula mengambil font TrueType dengan memasukkan nama font resminya. Untuk mengetahui nama resmi font Anda dapat melihatnya pada bagian atas dari utiliti Fonts pada Control Panel (lihat Gambar 2 untuk contohnya). Argumen kedua adalah 8-bit Encoding, gunakan string host agar PDFLib menentukan secara otomatis sesuai dengan platform OS yang digunakan. Argumen ketiga adalah pengontrolan proses font apakah akan diembed dalam dokumen PDF atau tidak. Bila Anda mengisikan 1 maka Anda harus menyediakan pula informasi font tersebut pada file upr. Baca manual PDFlib untuk keterangan lebih lanjut.
Setelah memilih font, kemudian Anda menentukan posisi di mana teks akan ditempatkan. Titik (0, 0) pada dokumen PDF terletak pada bagian kiri bawah kertas. Setelah titiknya ditentukan, untuk memasukkan teks gunakan fungsi PDF_show dan untuk meneruskan ke baris selanjutnya gunakan fungsi PDF_continue_text.
Setelah proses pembuatan dokumen PDF berakhir, maka fungsi PDF_close harus dipanggil.
Langkah selanjutnya adalah mengirimkan stream biner dokumen PDF yang telah dibuat ini ke browser. Data dari objek yang dibuat oleh PDFLib diambil terlebih dahulu dengan fungsi PDF_get_buffer. Kemudian panjang dokumen dihitung; panjang dokumen ini diperlukan karena browser IE akan menampilkan layar kosong bila tidak disertakan besar ukuran dokumen PDF-nya. Selanjutnya isi buffer data dapat dikirimkan langsung dengan mencetak streamnya dengan fungsi print. Lihat hasil skrip Hello World kita di Gambar 3.
Terakhir Anda memanggil fungsi PDF_delete untuk menghapus memori yang telah dialokasikan dalam pembuatan dokumen PDF ini.

Bekerja Dengan Gambar

PDFLib menyediakan fungsi untuk meletakkan gambar raster ke dokumen Anda. Format gambar yang didukung oleh PDFLib adalah: PNG (Portable Network Graphics), JPEG, GIF (harus memiliki minimal 218 color palette, bila kurang Anda perlu melakukan konversi dengan image editor), TIFF, CCITT, atau Raw Data.
Untuk menampilkan gambar ke dokumen Anda membutuhkan tiga fungsi. Tabel 2 mendaftarkan ketiga fungsi tersebut. Fungsi PDF_place_image dapat Anda gunakan berkali-kali dalam dokumen selama fungsi PDF_close_image belum dipanggil.
Berikut adalah contoh kode program untuk meletakkan gambar di dokumen. Hasilnya bisa dilihat di Gambar 4.
<?
$p =PDF_new();
PDF_open_file($p,"");
PDF_begin_page($p,595,842);
$logo = PDF_open_image_file($p, "png", "image.png", "", 0);
PDF_place_image($p, $logo, 0, 0, 0.5);
PDF_close_image($p, $logo);
PDF_end_page($p);
PDF_close($p);
$buf =PDF_get_buffer($p);
$len =strlen($buf);
header("Content-type:application/pdf");
header("Content-Length:$len");
header("Content-Disposition:inline;filename=image_php.pdf");
print $buf;
PDF_delete($p);
?>

Membuat Tabel

Untuk membuat tabel Anda harus melakukannya secara manual dengan menggambar tiap garis-garis tabel. Berikut contoh kodenya.
<?
$p =PDF_new();
PDF_open_file($p,"");
 
$font_verdana = PDF_findfont($p, "Verdana Bold", "host", 0);
 
PDF_begin_page($p,595,842);
 
PDF_setcolor($p, "fill", "cmyk", 0, 0, 0.4,0.5);
PDF_rect($p, 75,700, 430, 25);
PDF_fill_stroke($p);
 
$totalrow=10;
for($rownum=0; $rownum<$totalrow; $rownum++){
  $number=675-($rownum*25);
  PDF_rect($p, 75,$number, 430, 25);
  PDF_stroke($p);
}
PDF_moveto($p, 200, 675-(($totalrow-1)*25));
PDF_lineto($p, 200, 725);
PDF_stroke($p);
 
PDF_setcolor($p, "fill", "cmyk", 0, 0, 0, 0);
PDF_setfont($p, $font_verdana, 12.0);
PDF_set_text_pos($p, 115, 708);
PDF_show($p, "Key");
PDF_set_text_pos($p, 315, 708);
PDF_show($p, "Desription");
 
PDF_end_page($p);
PDF_close($p);
$buf =PDF_get_buffer($p);
$len =strlen($buf);
header("Content-type:application/pdf");
header("Content-Length:$len");
header("Content-Disposition:inline;filename=table_php.pdf");
print $buf;
PDF_delete($p);
?>
Pada listing di atas dibuat tabel sebanyak 11 baris dengan baris pertama sebagai headernya. Seperti bisa dilihat pada kode, proses pembuatan tabel dilakukan secara manual dengan menggambar masing-masing garis satu persatu.
Fungsi-fungsi grafik—yang dapat dilihat pada manual PDFlib—merupakan fungsi pembuat path. Untuk mendapatkan hasil akhirnya Anda harus memanggil fungsi stroke (PDF_stroke), fill (PDF_fill) atau gabungan keduanya (PDF_fill_stroke). Stroke akan menggambar garis pada path, sedangkan fill akan mengisi ruang yang dibuat oleh path.
Untuk memberikan warna pada stroke ataupun fill digunakan fungsi PDF_setcolor. Argumen kedua diisi “fill”, “stroke” atau “both”. Argumen ketiga diisi tipe warna yang digunakan apakah “cmyk”, “rgb”, “gray”, “spot” atau “pattern”. Untuk 4 argumen terakhir merupakan komposisi warna dalam rentang 0–1, untuk mengkonversi dari skala 0–255 warnanya dibagi saja dengan 255. Kemudian untuk RGB yang hanya membutuhkan 3 warna argumen ke-4 yang tidak digunakan diisi dengan 0, demikian pula bila “gray” maka 3 argumen terakhir diisi 0.
Hasil skrip pembuat tabel dapat dilihat di Gambar 5.

Menambahkan Informasi ke PDF

Informasi dokumen PDF dapat dilihat bila Anda membuka dokumen PDF melalui Acrobat Reader pada menu File > Document Info > General. Untuk mengisikan informasi ini gunakan fungsi PDF_set_info(PDF, key, value). Tabel 3 menjelaskan makna dari nilai-nilai key yang tersedia.

Tip

Pesan error yang biasanya muncul akan terhalang bila browser sudah pernah meload plugin Adobe Acrobat sebelumnya. Untuk dapat melihat pesan error yang dihasilkan oleh parser PHP Anda sebaiknya membuka browser baru kemudian membuka file PHP yang sama, maka sekarang pesan error akan muncul karena browser belum meload plugin Adobe Acrobat sebelumnya. Kasus ini hanya penulis temui pada browser Microsoft Internet Explorer.
PDF selama ini merupakan dokumen yang tidak terstruktur, artinya format ini tidak memiliki konsep paragraf, indentasi, dll. Adobe baru memperkenalkan tag struktur dokumen pada Acrobat 5. Karena itulah pada proses pembuatan dokumen PDF di sini, Anda bekerja seperti membuat gambar pada bidang kertas.
Sumber : http://www.master.web.id/mwmag/issue/05/content/pemrograman-pdf_dengan_php/pemrograman-pdf_dengan_php.html

Tidak ada komentar:

Posting Komentar