Noprianto Antiword
Upcoming SlideShare
Loading in...5
×
 

Noprianto Antiword

on

  • 1,109 views

 

Statistics

Views

Total Views
1,109
Views on SlideShare
1,109
Embed Views
0

Actions

Likes
0
Downloads
26
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Noprianto Antiword Noprianto Antiword Document Transcript

    • TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial AntiWord Memproses Dokumen Microsoft Word di Web Bagi Anda yang terbiasa bekerja dengan OpenOffice. Ada kalanya, ketika bepergian dan membawa dokumen OpenOffice dan Anda harus melihat isinya sementara tidak ada Open- Office yang terinstal di komputer yang Anda gunakan (ketika di warnet misalnya), apa yang harus dilakukan? Pasti akan lebih mudah apabila Anda memanfaatkan program un- tuk meng-convert dokumen word tersebut ke format yang bisa dibaca di komputer yang sedang digunakan. Di artikel ini, kita akan membahas pembuatan program tersebut. M asalah lupa meng-convert doku- Artikel ini ditulis di distro SUSE Pro 9.1, dan menampilkannya ke standard output men ke format yang lebih umum PHP 4.3.4, Antiword 0.35 dan Ghostscript (layar). Contoh: cukup sering penulis alami. Keti- library 7.07. Untuk distro lain, harusnya ti- $ antiword a.doc ka bepergian dengan satu dokumen dan ter- dak banyak hal yang berubah apabila semua paksa harus melihat isinya sementara kom- program yang dibutuhkan telah terinstal. Untuk meng-convert ke format XML, puter yang sedang digunakan tidak terinstal Anda bisa memberikan opsi -x diikuti oleh Mengenal Antiword OpenOffice misalnya, merupakan masalah nama DTD. Antiword yang penulis gunakan yang cukup mengganggu. Kita sebenarnya Sebelum kita melangkah ke aplikasi, ada hanya bisa menggunakan DTD berupa db( bisa saja mengextract dokumen SXW meng- baiknya apabila kita mengenal program an- docbook). Berikut ini adalah contoh kon- gunakan WinZip, lantas membaca file XML tiword terlebih dahulu. Program Antiword versi dokumen MS Word ke format XML: yang terkandung di dalamnya. Bisa saja. Ta- adalah program yang ditujukan untuk me- $ antiword -x db a.doc pi, bagaimana kalau tidak ada WinZip juga? nampilkan isi dari dokumen MS Word. Pa- Seperti yang telah dikatakan, akan lebih mu- da awalnya, format yang digunakan untuk Untuk meng-convert ke format PS, Anda dah apabila memanfaatkan converter online output hanyalah file teks. Namun seiring bisa memberikan opsi -p, diikuti oleh ukuran untuk dokumen word. Anda bisa memilih dengan perkembangannya, saat ini, pro- kertas seperti letter atau a4. Ukuran kertas di- untuk meng-convert ke format yang lebih gram ini juga bisa dapat meng-convert ke berikan dalam huruf kecil. Dalam beberapa umum seperti TEXT atau PDF. format PS. Format output teks tentunya me- hal, apabila Anda mempergunakan encoding Di dalam artikel kali ini, kita akan me- miliki sejumlah keterbatasan seperti gambar UTF-8, kombinasi Postscript dan UTF-8 ti- manfaatkan PHP, antiword dan program dan atribut layout lain. Dengan format PS, daklah didukung. Oleh karena itu, kita perlu ps2pdf untuk membangun converter online hal-hal tersebut bisa ditangani. Bagi yang memberikan opsi -m, untuk memberikan dokumen Word ke beberapa format lain XML mania, Anda juga bisa memanfaatkan file yang berisikan character-mapping agar seperti TEXT, PDF ataupun PS. Aplikasi antiword untuk meng-convert ke format file PS tetap bisa dihasilkan. File-file charac- yang kita bangun dapat dihost di server web XML. ter mapping tersebut sudah datang bersama untuk dapat pula menyediakan servis gratis Program ini bisa di-download di http:// paket antiword dan umumnya terletak di kepada pengguna internet lain. www.winfield.demon.nl/, walaupun, umum- /usr/share/antiword. Anda harus menyebut- Tentunya, hasil konversi tidaklah sempur- nya antiword sudah dipaketkan bersama kan nama filenya saja dan bukan path leng- na. Program yang kita gunakan untuk meng- distro Anda. Cobalah untuk melihat ke kap untuk opsi -m. Contoh berikut ini akan convert, antiword, secara umum hanya dapat dalam CD/DVD distribusi Anda sebelum mengconvert a.doc format PS (ukuran kertas mengekstrak teks dan atribut-atribut layout men-download dan mengompilasi dari letter) dengan menggunakan pemetaan ka- sederhana lainnya. Gambar terkadang bisa, source. rakter UTF-8 ke ISO-8859-1: namun tidak bisa diharapkan untuk mirip Cara menggunakan program ini sangat- $ antiword -pletter -m8859-1.txt seperti dokumen word aslinya. Tapi, tentu- lah mudah. Anda cukup memberikan argu- a.doc > a.ps nya tidak masalah. Dapat melihat isi saja su- men berupa nama file dokumen MS Word, dah sangat berguna. Anda bahkan bisa meli- dan secara default, antiword akan meng- Program ini akan selalu mencetak hasil hat hidden text dokumen MS Word Anda. convert dokumen tersebut ke format TEXT konversi ke standard output. Apabila kita 74 INFOLINUX 07/2005 www.infolinux.web.id
    • TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial AntiWord ingin menyimpan ke dalam file, kita harus program antiword dan ps2pdf (apabila dibu- meredireksi standard output ke nama file tuhkan) untuk menghasilkan output sesuai seperti contoh sebelumnya. format output yang dipilih oleh user. Output Catatan tambahan untuk konversi ke tersebut kemudian dikembalikan ke browser format PS. Antiword memiliki dua opsi lengkap dengan mime type-nya dan browser tambahan yaitu -i untuk image level dan - akan menangani output tersebut sesuai pe- L untuk mode landscape. Gunakan sesuai ngaturan pada browser. preferensi Anda. Anda bisa saja membangun service untuk Baik. Antiword mampu meng-convert publik. Masalahnya adalah, siapa yang mau ke PS dan XML. Tapi saya ingin format memberikan (meng-upload) dokumennya PDF. Apa yang harus saya lakukan? Anti- begitu saja kepada pihak yang tidak dikenal. word memang tidak bisa mengconvert lang- Berikut ini adalah source code docon- sung ke format PDF, namun Antiword su- web.php. Penjelasan setelah source code. dah melakukan pekerjaan yang sangat baik <? dengan dapat mengconvert ke format TEXT /* dan format PS, sebab: doconweb v0.1 Anda bisa meng-convert langsung for- nop, 10052005, 10:48 mat TEXT ke format PDF dengan me- gpl manfaatkan program text2pdf yang bisa */ didapatkan di http://www.eprg.org/pd- fcorner/text2pdf/. Program ini mampu $app_name = “doconweb”; meng-convert format TEXT ke PDF 1.1 $app_version = “0.1”; dengan sangat cepat dan cukup bersih. $app_copy = “(c) nop 2005, GPL”; Dalam tulisan kali ini, kita tidak me- $app_extra = “(use ghostscript manfaatkan program ini karena setelah library (c) Peter Deutsch beberapa kali mencoba, penulis lebih <ghost@aladdin.com> and senang untuk menggunakan cara yang antiword (c) A.J. van Os akan kita bahas selanjutnya. <antiword@winfield.demon.nl>)”; Anda bisa memanfaatkan output PS dari antiword dan menggunakan pro- $converter_app = “/usr/bin/ gram ps2pdf yang datang bersama paket antiword”; ghostscript library. Dengan demikian, $mapping_file = “8859-1.txt”; kita memberi perintah sama seperti keti- ka kita ingin meng-convert ke format PS. Setelah itu, kita melewatkan output an- if (!$_POST) tiword ke program ps2pdf dan menyim- { pan hasil konversi ke sebuah file PDF. echo “ <html> Sebagai contoh untuk konversi ke PDF <head> memanfaatkan ps2pdf: <title></title> $ antiword -m8859-1.txt -pletter </head> a.doc | ps2pdf - > a.pdf <body> <h3>$app_name $app_version</ Demikianlah pengenalan menggunakan h3> $app_extra program antiword. Berikut ini, kita akan <hr noshade> melihat bagaimana memanfaatkan pro- “; gram-program tersebut untuk menghasil- kan konverter online dokumen MS Word. echo “ <form action=’{$_ Doconweb SERVER[‘PHP_SELF’]}’ method= Secara umum, aplikasi yang akan kita bangun ’post’ enctype=’multipart/form- sangatlah sederhana. Apa yang kita butuhkan data’> adalah file yang di-upload oleh user. Setelah <table border=1> file diterima, kita hanya perlu memanggil <tr><td>Word 75 www.infolinux.web.id INFOLINUX 07/2005
    • TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial AntiWord document</td><td><input type= ’file’ name=’worddoc’></ td></tr> <tr><td>Output format</td><td> <select name=’output’> <option value=’PDF’> PDF</option> <option value=’PS’> PS</option> <option value=’TEXT’> Aplikasi doconweb. TEXT</option> program yang kita gunakan, yaitu anti- </select> [‘tmp_name’]} | ps2pdf - > word. Di komputer penulis, antiword </td></tr> {$_FILES[‘worddoc’][‘tmp_ berada di /usr/bin. Sementara, variabel <tr><td>Paper size (PDF & PS name’]}.pdf && cat {$_FILES $mapping_file berisikan nama file yang only)</td><td> [‘worddoc’][‘tmp_name’]}.pdf”; digunakan untuk pemetaan karakter. <select name=’paper’> $header_type = Karena antiword mengharuskan nama <option value= “Content-type: application/pdf”; file dan bukan path lengkap, maka kita ’letter’>Letter</ break; harus menyebutkan nama filenya saja, option> case “PS”: yang tersimpan di direktori /usr/share/ <option value=’a4’> $output_arg = “ -m antiword/. Pemetaan karakter digunakan A4</option> $mapping_file -p untuk output ke PS dan PDF. </select> {$_POST[‘paper’]} {$_ Setelah itu, kita memeriksa variabel $_ </td></tr> FILES[‘worddoc’][‘tmp_ POST. Apabila belum diset, maka form <tr><td>&nbsp;</td><td><input name’]}”; harus ditampilkan. Di form ini, kita me- type=’submit’ value=’view’></ $header_type = nyediakan fasilitas upload kepada user, td></tr> “Content-type: beserta parameter lain untuk konversi </table> application/postscript”; seperti tipe output dan ukuran kertas. </form> break; Tipe enkode form adalah multipart/ “; case “TEXT”: form-data yang dapat digunakan untuk $output_arg = “ {$_ fasilitas upload. echo “ FILES[‘worddoc’][‘tmp_ Apabila pada pemeriksaan form sebelum- </body> name’]}”; nya variabel $_POST telah diset, maka ber- </html> $header_type = arti user telah men-submit form tersebut. “; “Content-type: text/ Kita pun memeriksa apakah terjadi error } plain”; pada saat meng-upload. Error bisa terjadi else break; karena beberapa hal. Salah satunya adalah { } karena user tidak menyebutkan nama file- if ($_FILES[‘worddoc’][‘error’ nya. Atau, terjadi kegagalan transmisi. In- ] != 0) header($header_type); formasi file-file yang diupload disimpan { system(“$converter_app di dalam $_FILES[<NAMA VARIABEL header(“Location: {$_SERVER $output_arg”); FORM UNTUK TYPE=FILE>]. $_FILES [‘PHP_SELF’]}”); merupakan associative array sehingga } if ($_POST[‘output’] == memungkinkan kita untuk memeriksa else “PDF”) unlink($_FILES key error untuk $_FILES[‘worddoc’]. { [‘worddoc’][‘tmp_name’] . Apabila bukan nol, maka terjadi kesa- “.pdf”); lahan. Ketika terjadi kesalahan, kita $output_arg = “”; } mengirim header untuk membawa kita $header_type = “”; } kembali ke halaman kita sendiri (yang switch ($_POST[‘output’]) karena $_POST belum diset, maka form { ?> kembali ditampilkan). case “PDF”: Apabila file telah diupload dengan lan- Penjelasan source code: $output_arg = “ -m car, kita memeriksa tipe output yang di- Pertama-tama, melalui variabel $con- $mapping_file -p{$_POST inginkan. Rencananya, kita akan meng- verter_app, kita mengatur path ke lokasi [‘paper’]} {$_FILES[‘worddoc’] 76 INFOLINUX 07/2005 www.infolinux.web.id
    • TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial AntiWord gunakan cara kerja seperti berikut. Kita Khusus untuk output berupa format yang diperbolehkan untuk di-upload memiliki dua variabel: $header_type dan PDF, kita menghapus file sementara ke- (Anda bisa membaca manual PHP untuk $output_arg. Variabel pertama berguna tika perintah system() selesai dikerjakan. lebih lengkapnya). Kedua, dengan code untuk melewatkan tipe dokumen (mime Perhatikanlah isi dari $output_arg. Setiap seperti ini, orang-orang bisa saja mem- type) untuk header HTML, yang akan file yang di-upload oleh user akan diberi- buat robot untuk memanggil aplikasi berujung bagi browser untuk menindak- kan nama random tertentu. Nama terse- kita yang akan berujung pada kegagalan lanjuti sesuai tipe file-nya. Misal, tipe butlah yang disimpan sebagai nama file service (DoS) karena server kelebihan tu- HTML akan ditampilkan sebagai HT- untuk file yang di-upload ke harddisk ser- gas. Ada beberapa cara yang bisa dilaku- ML, tipe TEXT akan ditampilkan sebagai ver. Key untuk array $_FILES[‘worddoc’] kan, misalnya dengan meminta user un- TEXT dan tipe lain sesuai pengaturan di adalah tmp_name. Untuk format output tuk memasukkan teks pada gambar yang browser. Tentunya, untuk ketiga output berupa TEXT, maka $output_arg hanya selalu digenerate secara random (Anda yang diinginkan, tipe dokumennya ber- akan berisi nama file random tersebut. bisa membaca resep pemrograman PHP beda. Untuk TEXT, kita menggunakan Untuk format output berupa PS, maka milik Steven Haryanto untuk lebih jelas- text/plain, untuk PDF, kita mengguna- akan berisi -m $mapping_file -p {$_ nya). Secara umum, program ini masih kan application/pdf dan untuk PS, kita POST[‘paper’]} dan nama file random memerlukan banyak perbaikan untuk menggunakan application/postscript. Se- tersebut. Untuk format output berupa diterapkan pada jaringan publik. mentara, variabel $output_arg berisikan PDF, kita melewatkan output PS ke pro- gram ps2pdf dan menyimpan ke nama Bisa kita lihat, dengan memanfaatkan tool- semua arguman yang ingin dilewatkan file random ditambah ekstensi pdf dan tool open source, kita bisa membangun ke program antiword. Dengan demikian, setelah itu memanggil program cat untuk solusi yang mungkin akan cukup mahal (ba- setelah kita mendapatkan isi kedua varia- menampilkan isi file PDF ke standard out- hasa pemrograman, web server, konverter, bel tersebut pada blok switch(), kita pun put, yang akan ditangkap oleh browser. pembuat PDF umumnya bukan barang mu- tinggal memanggil fungsi header() un- Ada beberapa hal yang mungkin sedikit rah di dunia proprietary) apabila kita meng- tuk melewatkan tipe header dan fungsi mengganggu. Pertama, tentunya harus gunakan sistem proprietary. system() untuk menjalankan program antiword beserta semua parameternya. diperhatikan pula maksimal ukuran file Noprianto (noprianto@infolinux.co.id) 77 www.infolinux.web.id INFOLINUX 07/2005