Script PHP untuk Membuat Dokumen RTF

OK… dalam artikel ini akan dijelaskan bagaimana cara mengenerate dokumen RTF (Rich Text Format) dengan script PHP. Mengapa RTF? kenapa bukan DOC nya MS. Word? Yup… good question. Konten dokumen RTF lebih mudah untuk dimanipulasi dibandingkan dokumen DOC. Hal ini dikarenakan dalam dokumen DOC terdapat unsur grafis, dan bukanlah text based. Untuk menunjukkan hal ini, cobalah dokumen DOC ini Anda buka melalui text editor seperti NOTEPAD, atau Crimson Editor dll, pastilah isinya semrawut dan di sana sini tampil kode-kode yang tidak bisa dibaca. Namun beda halnya bila Anda membuka file RTF dengan text editor, pastilah isinya tidak semrawut dan dapat dibaca. Ya… dokumen RTF merupakan dokumen berbasis text based. Oleh karena itu, isi dokumen RTF ini dapat kita manipulasi dengan script untuk mendapatkan dokumen output yang diinginkan.

Dalam contoh ini, studi kasus yang diambil adalah membuat surat undangan dimana nama orang yang diundang, alamatnya, serta tempat dan waktu undangan akan diinputkan melalui suatu form. Setelah form ini diproses, selanjutnya akan muncul surat undangan berbentuk dokumen RTF dengan isi sesuai dengan data yang dimasukkan via form tadi.

Untuk membuat studi kasus di atas, apa yang dilakukan pertama kali? Hal pertama yang Anda lakukan adalah membuat template dokumen untuk surat undangannya. Caranya adalah bukalah MS. Word, lalu ketikkan sebarang format surat undangan, misalnya seperti di bawah ini:

01.Hal : Undangan
02.
03.Kepada Ykh.
04.Bp/Ibu %%NAMA%%
05.Di %%ALAMAT%%
06.
07.Dengan hormat,
08.Mengharap kehadiran Bapak/Ibu untuk menghadiri rapat koordinasi
09.yang akan diadakan pada:
10.
11.Tanggal : %%TGL%%
12.Tempat  : %%TEMPAT%%
13.Waktu   : %%WAKTU%%
14.
15.Demikian undangan ini dibuat, atas kehadirannya disampaikan
16.terimakasih.
17.
18.Surakarta, 5 Nopember 2008
19.
20.Sekretaris
21.Rosihan Ari Yuana

Perhatikan template di atas! Dalam template terdapat penanda untuk masing-masing item, misalnya untuk item nama yang diundang diberi tanda %%NAMA%%, tanggal undangannya diberi tanda %%TGL%% dsb. Tanda-tanda inilah yang nantinya akan digantikan dengan data yang disubmit via form. Apakah tandanya harus diapit dengan %% ? Sebaiknya ya.. karena tanda % dalam RTF tetap ditulis apa adanya. Maksudnya, bila Anda menulis % di dokumen RTF, lalu membukanya di text editor maka tanda % tadi tidak akan berubah. Namun beda hasilnya bila Anda menggunakan tanda #, misalnya. Bila Anda ketika # di dokumen, lalu membukanya di text editor, maka tanda ini akan dinyatakan dalam bentuk yang lain.

Setelah Anda buat dokumen templatenya, sekarang Anda simpan template tersebut ke dalam format RTF. Caranya klik menu FILE di MS. Word, pilih SAVE, pada bagian SAVE AS TYPE, pilih (Rich Text Format) RTF. Misalkan dokumen tersebut kita simpan dengan nama file surat.rtf.

Nah… untuk iseng-iseng saja, sekarang coba bukalah surat.rtf ini dengan NOTEPAD, NOTEPAD++, Crimson Editor atau text editor yang lain. Pastilah isi yang tampil adalah sebagai berikut:

01.(dipotong, karena panjang....)
02.
03.\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
04.{\insrsid1652669 Hal\tab : Undangan
05.\par
06.\par Kepada Ykh.
07.\par Bp/Ibu %%NAMA%%
08.\par Di %%ALAMAT%%
09.\par
10.\par Dengan hormat,
11.\par Mengharap kehadiran Bapak/Ibu untuk menghadiri rapat
12.koordinasi yang akan diadakan pada:
13.\par
14.\par Tanggal\tab : %%TGL%%
15.\par Tempat\tab : %%TEMPAT%%
16.\par Waktu\tab \tab : %%WAKTU%%
17.\par
18.\par Demikian undangan ini dibuat, atas kehadirannya disampaikan
19.terimakasih.
20.\par
21.\par Surakarta, 5 Nopember 2008
22.\par
23.\par Sekretaris
24.\par
25.\par
26.\par
27.\par Rosihan Ari Yuana
28.\par }}

Catatan: tempate di atas dibuat dengan MS. Word 2003. Bisa jadi isi dokumen RTF di atas berbeda untuk setiap versi MS. Word.

Anda perhatikan isi template, bahwa tanda-tanda untuk setiap item yang kita buat tadi masih terlihat. Sehingga tugas kita selanjutnya adalah melakukan replacing string untuk masing-masing penanda dengan data yang diisikan via form. Itu adalah ide dasarnya.

OK… template surat sudah dibuat, langkah selanjutnya adalah membuat form untuk mengisi data surat. Ini dia contoh formnya.

01.<h1>Buat Surat Undangan</h1>
02.
03.<form method="post" action="surat.php">
04.<table>
05.<tr><td>Nama Penerima Surat</td><td><input type="text" name="nama"></td></tr>
06.<tr><td>Alamat Penerima Surat</td><td><input type="text" name="alamat"></td></tr>
07.<tr><td>Tanggal Acara</td><td><input type="text" name="tanggal"></td></tr>
08.<tr><td>Tempat Acara</td><td><input type="text" name="tempat"></td></tr>
09.<tr><td>Waktu Acara</td><td><input type="text" name="waktu"></td></tr>
10.<tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr>
11.</table>
12.</form>

Berikutnya, kita buat script surat.php untuk memproses form. Di dalam script PHP ini pastilah terdapat perintah untuk melakukan replacing string masing-masing penanda dengan data string dari form. Apa perintah yang bisa digunakan? Untuk replacing ini kita bisa gunakan str_replace().

surat.php

01.<?php
02.
03.// membaca data dari form
04.
05.$nama = $_POST['nama'];
06.$alamat = $_POST['alamat'];
07.$tanggal = $_POST['tanggal'];
08.$waktu = $_POST['waktu'];
09.$tempat = $_POST['tempat'];
10.
11.// membaca isi dokumen tempate surat.rtf
12.// isi dokumen dinyatakan dalam bentuk string
13.
14.$document = file_get_contents("surat.rtf");
15.
16.// mereplace tanda %%%NAMA% dengan data nama dari form
17.$document = str_replace("%%NAMA%%", $nama, $document);
18.
19.// mereplace tanda %%%ALAMAT% dengan data alamat dari form, dst
20.$document = str_replace("%%ALAMAT%%", $alamat, $document);
21.
22.$document = str_replace("%%TGL%%", $tanggal, $document);
23.$document = str_replace("%%TEMPAT%%", $tempat, $document);
24.$document = str_replace("%%WAKTU%%", $waktu, $document);
25.
26.// header untuk membuka file output RTF dengan MS. Word
27.// nama file output adalah undangan.rtf
28.
29.header("Content-type: application/msword");
30.header("Content-disposition: inline; filename=undangan.rtf");
31.header("Content-length: " . strlen($document));
32.echo $document;
33.
34.?>

Begitulah cara untuk mengenerate dokumen RTF dengan script PHP. Memang dalam contoh ini data yang disisipkan ke dokumen RTF bersifat single data. Untuk multiple data, seperti misalnya menampilkan data-data hasil query ke dalam bentuk tabel pada dokumen RTF, hal ini agak sulit dilakukan. Hal ini dikarenakan format tabel dalam dokumen RTF sangat kompleks bentuknya. Tapi bukan berarti tidak mungkin dibuat. Bila ada di antara Anda yang sudah berhasil membuat dokumen RTF dengan multiple data ini, dapat dishare ilmunya ke saya :-)

OK… selamat mencoba

NB:
Anda dapat mendownload script di atas (termasuk dokumen RTF template suratnya), di bawah ini

Download Script

source: http://blog.rosihanari.net