Saya yakin jika Anda cukup bergaul dan melek internet, pasti pernah mendengar, membaca, juga barangkali membuat dokumen dalam bentuk format PDF (Portable Document Format). Ketika Anda membaca artikel ini secara online, saya semakin yakin bahwa tidak mungkin Anda tidak pernah mendengar mengenai PDF. Paling tidak Anda telah mendengar mengenai PDF judul dari judul artikel ini :) Bisa beli PDF-nya, Pak? Format dokumen PDF pertama kali dikenalkan oleh Adobe System (http://www.adobe.com), hasil dari pengembangan Dr. John Warnock di awal tahun 90-an. Proyek PDF dimaksudkan membuat format file untuk distribusi dokumen di dalam perusahaan yang dapat ditampilkan di berbagai platform komputasi. PDF akhirnya menjadi format dokumen yang universal dan lintas platform, karena tersedia di berbagai platform komputasi. Program untuk membaca dokumen PDF dalam berbagai platform disediakan secara gratis untuk didownload oleh Adobe System. Plug-in program pembaca untuk browser populer juga tersedia, sehingga dokumen PDF dapat dibaca langsung secara online dari situs internet tanpa perlu mendownload dokumen dan membacanya denga program yang terpisah dari browser web. PDF memiliki beberapa fitur keunggulan antara lain: • Universal dan Lintas Platform. Dokumen PDF dapat dibaca di berbagai platform, bahkan dapat dibaca secara online melalui browser yang telah dilengkapi dengan plug-in pembaca PDF. Tools dan printer driver untuk membuat dokumen PDF pun banyak tersedia. Keunggulan ini menyebabkan dokumen PDF dapat digunakan secara luas di seluruh dunia. • Yang Anda Lihat, Yang Anda Dapatkan. Berbeda dengan format HTML/SGML, PDF lebih dapat menjamin apa yang ditampilkan pada monitor, maka serupa itu pula yang akan kita dapatkan jika dokumen dicetak. Dengan format HTML/SGML, maka hasil cetakan bisa jadi akan berbeda dengan yang tampak di monitor, bahkan dokumen yang tampak di monitor pun bisa jadi berbeda-beda tergantung dari browser yang digunakan. Hasilnya, PDF sangat sesuai digunakan untuk menampilkan informasi kritis yang tidak memperbolehkan variasi dalam presentasinya, misalnya invoice, tanda terima, dan laporan-laporan baku lainnya. • Hemat Ukurannya. Secara native file PDF telah dikompresi sedemikian rupa, sehingga ukuran filenya akan lebih kecil daripada jika file tersebut dalam format HTML, misalnya. Kecilnya ukuran file PDF ini menyebabkan PDF populer digunakan untuk tukar-menukar dokumen lewat internet karena tidak memboroskan bandwidth data. • Pengamanan Dokumen Dapat Diandalkan. PDF juga memiliki fitur pengamanan dokumen dari kemungkinan pencurian isi, duplikasi, dan pencetakan dokumen oleh yang tidak berhak. Sebuah dokumen PDF dapat pula diberikan tanda tangan digital (digital signature) sehingga penyebaran dokumen dapat lebih dikendalikan. Fitur ini tidak dimiliki oleh format dokumen universal seperti HTML/SGML. 1.1. Benarkah Perlu PDF? Kecuali jika Anda hanya ingin bekerja dengan dokumen-dokumen non presisi dan tidak menginginkan kemudahan bertukar dokumen, maka Anda kemungkinan besar membutuhkan format dokumen PDF. Jika Anda ingin: • membuat invoice, order pembelian, surat pengangkutan, tanda terima, dan dokumen komersial untuk situs e-commerce atau aplikasi berbasis web • membuat laporan dari aplikasi berbasis web dengan format yang presisi yang tidak memperkenankan variasi hasil cetakan • membuat cetakan form isian dari web dengan hasil yang seragam • membuat dokumen lain yang membutuhkan pengendalian baik terhadap distribusi dokumen maupun presisi dan kualitas cetakan, serta dapat dipertukarkan secara mudah, Saya berani memberi saran kepada Anda untuk menghindari kerja keras memformat dokumen dalam bentuk HTML dengan menggunakan format dokumen PDF. Sebagai pecinta PHP, Anda benar-benar dimanjakan karena PHP memiliki kemampuan untuk membuat dokumen PDF. Pada artikel ini kita akan coba mempelajarinya. 1.2. Pilih Yang Mana... Cukup banyak ekstensi PHP tersedia yang memungkinkan Anda membuat dokumen PDF melalui PHP. Beberapa yang dapat Anda pilih: • PDFLib. Aladdin Free Public License memperkenankan penggunaan PDFLib untuk penggunaan non komersial. Untuk lisensi komersial, termasuk penggunaan dalam layanan web komersial, dikenakan harga lisensi yang dapat dilihat pada http://pdflib.com. • FreePDFlib oleh Thomas Szadel (open source). • ClibPDF menggunakan model lisensi yang sama dengan PDFLib. Dalam tulisan ini, kita akan menggunakan fungsi-fungsi yang ada pada PDFLib. Sebelum memulai semuanya, sebaiknya Anda pastikan dulu ekstensi PDFLib telah terpasang pada sistem PHP Anda. Jangan lupa juga, Anda juga harus memastikan browser Anda telah terinstalasi plug-in untuk membaca dokumen PDF. Untuk lebih memudahkan Anda, maka telah tersedia source code dan hasilnya (dalam dokumen PDF) dalam bentuk file .zip. Anda tinggal download saja file artpdf.zip ini. Jika Anda telah siap, mari kita lanjutkan dengan membuat dokumen PDF paling sederhana. 1.3. PDF Pertamaku, Tak Terlupakan... Sesungguhnya saya tidak menyukai memulai sesuatu dengan rutinitas. Ketika Anda belajar bahasa pemrograman apa pun, selalu kita dipaksa untuk mengucapkan, "Hello, World!" dalam bahasa pemrograman baru. Saya juga akan mengajak Anda untuk melakukannya lagi saat ini, namun untuk sedikit mengurangi kejenuhan, mari kita ubah program ini menjadi program "PDF Pertamaku". Coba Anda buat skrip seperti di bawah ini, dan coba jalankan di PHP melalui browser favorit Anda. <?php $halaman = pdf_new(); pdf_open_file($halaman); pdf_set_info($halaman,"Creator","pdf-ku.php"); pdf_set_info($halaman,"Author","Mr. Dodol"); pdf_set_info($halaman,"Title","PDF Pertamaku"); pdf_begin_page($halaman,595,842); $huruf = pdf_findfont($halaman,"Helvetica-Bold","host",0); pdf_setfont($halaman,$huruf,38.0); pdf_show_xy($halaman,"Inilah PDF Pertamaku!",50,700); pdf_end_page($halaman); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type: application/pdf"); Header("Content-Length: $panjangbuffer"); Header("Content-Disposition: inline; filename=pdf-ku.pdf"); echo $buf; pdf_delete($halaman); ?> 1.4. Tentukan Letak Bintang di Langit Membuat dokumen PDF, sebenarnya mirip dengan proses menggambar pada kanvas. Agar Anda mampu menempatkan gambar maupun tulisan di tempat yang sesuai dengan keinginan Anda, maka Anda perlu mengetahui cara penentuan letak pada dokumen PDF. Pada dokumen PHP berlaku sistem koordinat dua dimensi (x,y), dimana titik asal atau koordinat (0,0) ada di pojok kiri bawah dokumen. Arah koordinat x adalah arah horisontal (dari kiri ke kanan) dan arah koordinat y adalah arah vertikal (dari bawah ke atas). Sistem ukuran dasar/skala yang digunakan adalah point atau disingkat pt, dengan konversinya: 1 pt = 1/72 inch = 0.35277777778 mm, atau dengan kata lain 1 inch = 72 pt. Pembuatan dokumen PHP, dikerjakan per halaman. Pada saat awal membuat halaman, Anda harus menentukan terlebih dahulu lebar dan panjang kertas yang akan digunakan dalam satuan pt. Tabel berikut ini akan memberikan informasi ukuran jenis kertas dalam satuan pt. Jenis Ukuran Kertas Horisontal Vertikal US - Letter - 612 792 US - Legal - 612 1008 US - Ledger - 1224 792 11x17 - 792 - 1224 A0 - 2380 - 3368 A1 - 1684 - 2380 A2 - 1190 - 1648 A3 - 842 - 1190 A4 - 595 - 842 A5 - 421 - 595 A6 - 297 - 421 B5 - 501 - 709 Mari Anda coba skrip di bawah ini untuk belajar bermain dalam koordinat halaman berukuran A4. <?php $halaman = pdf_new(); pdf_open_file($halaman); pdf_set_info($halaman,"Creator","koord.php"); pdf_set_info($halaman,"Author","Mr. Dodol"); pdf_set_info($halaman,"Title","Test Koordinat PDF"); pdf_begin_page($halaman,595,842); //ukuran kertas A4 //membuat tulisan pada halaman $huruf = pdf_findfont($halaman,"Helvetica-Bold","host",0); pdf_setfont($halaman,$huruf,38.0); pdf_show_xy($halaman, "Kiri Bawah", 10, 10); pdf_show_xy($halaman, "Kanan Bawah", 335, 10); pdf_show_xy($halaman, "Kiri Atas", 10, 802); pdf_show_xy($halaman, "Kanan Atas", 375, 802); pdf_show_xy($halaman, "Tengah",595/2-60,842/2-20); // membuat garis di pinggir halaman pdf_setrgbcolor_stroke($halaman,1,0,0); pdf_moveto($halaman,10,10); pdf_lineto($halaman,10,832); pdf_lineto($halaman,585,832); pdf_lineto($halaman,585,10); pdf_lineto($halaman,10,10); pdf_stroke($halaman); pdf_setrgbcolor_stroke($halaman,0,0,0); pdf_end_page($halaman); pdf_set_parameter($halaman, "openaction", "fitpage"); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type:application/pdf"); Header("Content-Length:$panjangbuffer"); Header("Content-Disposition:inline; filename=koord.pdf"); echo $buf; pdf_delete($halaman); ?> Skrip di atas akan menghasilkan dokumen PDF serupa ini. Anda memiliki kemungkinan untuk mengubah titik asal (0,0) dan membalik arah koordinat, sebagai contoh, Anda dapat membuat pojok kiri atas sebagai titik asal koordinat dan memiliki nilai positif untuk arah dari atas ke bawah dan dari kiri ke kanan. Anda dapat mencoba skrip berikut ini. <?php $halaman = pdf_new(); pdf_open_file($halaman); pdf_set_info($halaman,"Creator","koordbalik.php"); pdf_set_info($halaman,"Author","Mr. Dodol"); pdf_set_info($halaman,"Title","Mengubah Titik Asal dan Arah Koordinat (PHP)"); pdf_begin_page($halaman,595,842); // Mengubah Titik Asal pdf_translate($halaman,0,842); // Membalik Arah Sumbu Mendatar pdf_scale($halaman, 1, -1); // Mencerminkan skala horisontal pdf_set_value($halaman,"horizscaling",-100); $huruf = pdf_findfont($halaman,"Helvetica-Bold","host",0); pdf_setfont($halaman,$huruf,-38.0); pdf_show_xy($halaman, "Top Left", 10, 40); pdf_end_page($halaman); pdf_set_parameter($halaman, "openaction", "fitpage"); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type:application/pdf"); Header("Content-Length:$panjangbuffer"); Header("Content-Disposition:inline; filename=koordbalik.pdf"); echo $buf; pdf_delete($halaman); ?> 1.5. Bicara dengan Tulisan Dalam contoh-contoh skrip di atas, Anda telah mencoba menulis pada halaman PDF. Kali ini Anda akan mendapatkan penjelasan mengenai fungsi-fungsi dasar yang digunakan untuk membuat tulisan pada dokumen PDF. Sebagian dari fungsi-fungsi ini telah pernah Anda gunakan. pdf_show_xy() Fungsi ini digunakan untuk menuliskan text pada posisi tertentu yang diberikan. Contoh: <? pdf_show_xy($halaman,"Tulisan Saya",50,100); ?> Contoh di atas akan menuliskan text "Tulisan Saya" mulai pada koordinat (50,100) pada halaman PDF yang didefinisikan oleh variabel $halaman. pdf_show() Fungsi ini digunakan untuk menuliskan text pada posisi tertentu yang telah diset terlebih dahulu dengan fungsi pdf_set_text_pos(). Contoh: <? pdf_set_text_pos($halaman, 50,100); pdf_show($halaman,"Text"); ?> pdf_continue_text() Fungsi ini digunakan untuk menuliskan text pada posisi baris berikutnya. pdf_show_boxed() Fungsi ini digunakan untuk memformat text dalam suatu box/kotak tertentu. Contoh skrip berikut ini akan memberi kesempatan bagi Anda untuk mengerti maksud penggunaan fungsi pdf_show_boxed(). <?php $halaman = pdf_new(); pdf_open_file($halaman); pdf_begin_page($halaman,595,842); $font = pdf_findfont($halaman,"Helvetica-Bold","host",0); pdf_setfont($halaman,$font,24.0); $text = <<<TEKS Contoh beberapa text di dalam kotak text pada dokumen PDF. TEKS; pdf_show_boxed($halaman, $text, 50, 630, 300, 200, "left"); pdf_rect($halaman,50,630,300,200); pdf_stroke($halaman); pdf_show_boxed($halaman, $text, 50, 420, 300, 200, "right"); pdf_rect($halaman,50,420,300,200); pdf_stroke($halaman); pdf_show_boxed($halaman, $text, 50, 210, 300, 200, "justify"); pdf_rect($halaman,50,210,300,200); pdf_stroke($halaman); pdf_show_boxed($halaman, $text, 50, 0, 300, 200, "fulljustify"); pdf_rect($halaman,50,0,300,200); pdf_stroke($halaman); pdf_show_boxed($halaman, $text, 375, 250, 200, 300, "center"); pdf_rect($halaman,375,250,200,300); pdf_stroke($halaman); pdf_end_page($halaman); pdf_set_parameter($halaman, "openaction", "fitpage"); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type:application/pdf"); Header("Content-Length:$panjangbuffer"); Header("Content-Disposition:inline; filename=kotakteks.pdf"); echo $buf; pdf_delete($halaman); ?> Skrip di atas jika dijalankan, akan menghasilkan dokumen PDF seperti gambar berikut ini.
1.9. Satu Untuk Semua, Semuanya Dari Satu Adakalanya kita ingin mencetak bentuk, gambar atau tulisan secara berulang pada beberapa halaman PDF yang kita akan buat. Naluri kepemalasan kita akan berontak. Bisa tidak semua perulangan ini dibuat lebih ringkas dan mudah? Pada kondisi ini maka kita membutuhkan pola baku alias template. Dalam dunia PDF, template dikenal sebagai form XObjects. Dokumen PDF yang dibuat akan menjadi lebih kecil ukurannya dengan memanfaatkan template. Contoh skrip berikut ini dapat coba Anda pahami. <?php $halaman = pdf_new(); pdf_open_file($halaman); // Muat Gambar/Logo PHP $gambar = pdf_open_jpeg($halaman, "php-big.jpg"); // Memulai Template $template = pdf_begin_template($halaman,595,442); pdf_save($halaman); pdf_place_image($halaman, $gambar, 4, 403, 0.25); pdf_place_image($halaman, $gambar, 525, 403, 0.25); pdf_moveto($halaman,10,395); pdf_lineto($halaman,585,395); pdf_lineto($halaman,585,10); pdf_lineto($halaman,10,10); pdf_closepath($halaman); pdf_stroke($halaman); pdf_moveto($halaman,10,375); pdf_lineto($halaman,585,375); pdf_stroke($halaman); $font = pdf_findfont($halaman,"Times-Bold","host",0); pdf_setfont($halaman,$font,38.0); pdf_show_xy($halaman,"Contoh Template PDF",100,407); pdf_restore($halaman); pdf_end_template($halaman); // Tutup Gambar/Logo PHP pdf_close_image ($halaman,$gambar); // Halaman Pertama pdf_begin_page($halaman,595,442); pdf_place_image($halaman, $template, 0, 0, 1.0); pdf_setfont($halaman,$font,14.0); pdf_show_xy($halaman,"Contoh Template PDF Halaman 1",15,380); pdf_end_page($halaman); // Halaman Kedua pdf_begin_page($halaman,595,442); pdf_place_image($halaman, $template, 0, 0, 1.0); pdf_setfont($halaman,$font,14.0); pdf_show_xy($halaman,"Contoh Template PDF Halaman 2",15,380); pdf_end_page($halaman); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type:application/pdf"); Header("Content-Length:$panjangbuffer"); Header("Content-Disposition:inline; filename=template.pdf"); echo $buf; pdf_delete($halaman); ?> Dokumen PDF dua halaman akan terbentuk sebagai berikut. Contoh aplikasi dalam dunia nyata adalah untuk dokumen atau pencetakan invoice, kuitansi, packing list, dan dokumen-dokumen lain yang berbentuk form baku. 1.10. Mewarnai dengan Pola Pola isian mirip dengan pola baku/templates, hanya saja pola isian digunakan untuk pengganti warna isian. Anda dapat menggambar kurva/path, garis atau bentuk primitif kurva lainnya (stroke), dan mengisi warna kurva/path tersebut dengan sebuah pola isian. Contoh berikut ini akan mengobarkan kembali semangat PHP kita. <?php $halaman = pdf_new(); pdf_open_file($halaman); // Muat gambar untuk pola isian $gambar = pdf_open_jpeg($halaman, "php-big.jpg"); // Membuat pola $pola = pdf_begin_pattern($halaman,21,14,25,18,1); pdf_save($halaman); pdf_place_image($halaman, $gambar, 0,0,0.08); pdf_restore($halaman); pdf_end_pattern($halaman); // Tutup gambar pdf_close_image ($halaman,$gambar); pdf_begin_page($halaman,595,842); // Gunakan pola untuk isian dan garis gambar pdf_setcolor($halaman, "fill", "pattern", $pola); pdf_setcolor($halaman, "stroke", "pattern", $pola); pdf_setlinewidth($halaman, 60.0); pdf_circle($halaman,200,680,100); pdf_stroke($halaman); pdf_end_page($halaman); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type:application/pdf"); Header("Content-Length:$panjangbuffer"); Header("Content-Disposition:inline; filename=polaisian.pdf"); echo $buf; pdf_delete($halaman); ?> 1.11. Tandai Yang Penting Anda dapat menandai bagian-bagian yang penting dalam dokumen PDF dengan bookmark, sehingga navigasi dokumen menjadi lebih mudah. Bookmark ini bisa berbentuk struktur pohon (tree structure) menyerupai daftar isi. Selain berupa bookmark, Anda dapat juga mempermudah navigasi dokumen dengan membuat daftar thumbnail halaman-halaman yang ada pada dokumen PDF. Contoh berikut ini akan membantu untuk mempelajari caranya. <?php $halaman = pdf_new(); pdf_open_file($halaman); // Halaman Pertama pdf_begin_page($halaman,595,842); // Set Bookmark Awal dan Jenis Huruf $top = pdf_add_bookmark($halaman, "Sistem Operasi"); $font = pdf_findfont($halaman,"Helvetica-Bold","host",0); $gambar = pdf_open_jpeg($halaman, "freebsd.jpg"); pdf_add_thumbnail($halaman, $gambar); pdf_setfont($halaman, $font, 20); pdf_add_bookmark($halaman, "FreeBSD", $top); pdf_show_xy($halaman, "Ini adalah halaman tentang FreeBSD", 50, 670); pdf_place_image($halaman, $gambar, 50, 700, 1); pdf_close_image($halaman,$gambar); pdf_end_page($halaman); // Halaman Kedua pdf_begin_page($halaman,595,842); $gambar = pdf_open_jpeg($halaman, "linux.jpg"); pdf_add_thumbnail($halaman, $gambar); pdf_setfont($halaman, $font, 20); pdf_add_bookmark($halaman, "Linux", $top); pdf_show_xy($halaman, "Ini adalah halaman tentang Linux", 50, 670); pdf_place_image($halaman, $gambar, 50, 700, 1); pdf_close_image($halaman,$gambar); pdf_end_page($halaman); // Halaman Ketiga pdf_begin_page($halaman,595,842); $gambar = pdf_open_jpeg($halaman, "mac.jpg"); pdf_add_thumbnail($halaman, $gambar); pdf_setfont($halaman, $font, 20); pdf_add_bookmark($halaman, "Mac", $top); pdf_show_xy($halaman, "Ini adalah halaman tentang Mac", 50, 670); pdf_place_image($halaman, $gambar, 50, 700, 1); pdf_close_image($halaman,$gambar); pdf_end_page($halaman); pdf_close($halaman); $buf = pdf_get_buffer($halaman); $panjangbuffer = strlen($buf); Header("Content-type:application/pdf"); Header("Content-Length:$panjangbuffer"); Header("Content-Disposition:inline; filename=tandabuku.pdf"); echo $buf; pdf_delete($halaman); ?> 1.12. Habis Ini, Terus... Jika Anda telah mempelajari artikel ini sampai pada tahap ini, maka Anda telah memiliki dasar yang cukup untuk membuat dokumen PDF dengan PHP dan PDFLib. Keterangan mengenai fungsi-fungsi PDF yang digunakan dalam skrip contoh di artikel ini dapat Anda pelajari lebih detil pada Manual PHP yang tersedia di http://www.php.net. Selamat menjadi
Penulis : Unknown ~ Sebuah blog yang menyediakan berbagai macam informasi
Artikel ini dipublish oleh Unknown pada hari Kamis, 01 Desember 2011. Semoga artikel ini dapat bermanfaat.Terimakasih atas kunjungan Anda silahkan tinggalkan komentar.sudah ada 0 komentar: di postingan
0 komentar:
Posting Komentar