About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • PHP
  • /
  • Script PHP untuk Membuat Dokumen RTF
PHP

Script PHP untuk Membuat Dokumen RTF

Artikel ini terinspirasi oleh requestnya mas “Kereayem” yang menanyakan bagaimana cara membuat dokumen DOC dengan script PHP di salah satu komentarnya dalam blog ini. Namun maaf mas… karena sepertinya dokumen DOC sulit dimanipulasi dengan PHP, sehingga sebagai gantinya adalah dokumen dalam bentuk RTF. Setelah cari referensi sana sini terkait dengan hal ini, akhirnya ketemu juga ilmunya. Nah… sekarang saatnya saya berbagi ilmu tersebut melalui blog ini.

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:


Hal	: Undangan

Kepada Ykh.
Bp/Ibu %%NAMA%%
Di %%ALAMAT%%

Dengan hormat,
Mengharap kehadiran Bapak/Ibu untuk menghadiri rapat koordinasi 
yang akan diadakan pada:

Tanggal	: %%TGL%%
Tempat	: %%TEMPAT%%
Waktu	: %%WAKTU%%

Demikian undangan ini dibuat, atas kehadirannya disampaikan 
terimakasih.

Surakarta, 5 Nopember 2008

Sekretaris
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:

(dipotong, karena panjang....)

\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
{\insrsid1652669 Hal\tab : Undangan
\par 
\par Kepada Ykh.
\par Bp/Ibu %%NAMA%%
\par Di %%ALAMAT%%
\par 
\par Dengan hormat,
\par Mengharap kehadiran Bapak/Ibu untuk menghadiri rapat 
koordinasi yang akan diadakan pada:
\par 
\par Tanggal\tab : %%TGL%%
\par Tempat\tab : %%TEMPAT%%
\par Waktu\tab \tab : %%WAKTU%%
\par 
\par Demikian undangan ini dibuat, atas kehadirannya disampaikan 
terimakasih.
\par 
\par Surakarta, 5 Nopember 2008
\par 
\par Sekretaris
\par 
\par 
\par 
\par Rosihan Ari Yuana
\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.


<h1>Buat Surat Undangan</h1>

<form method="post" action="surat.php">
<table>
<tr><td>Nama Penerima Surat</td><td><input type="text" name="nama"></td></tr>
<tr><td>Alamat Penerima Surat</td><td><input type="text" name="alamat"></td></tr>
<tr><td>Tanggal Acara</td><td><input type="text" name="tanggal"></td></tr>
<tr><td>Tempat Acara</td><td><input type="text" name="tempat"></td></tr>
<tr><td>Waktu Acara</td><td><input type="text" name="waktu"></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr>
</table>
</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


<?php

// membaca data dari form

$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$tanggal = $_POST['tanggal'];
$waktu = $_POST['waktu'];
$tempat = $_POST['tempat'];

// membaca isi dokumen tempate surat.rtf
// isi dokumen dinyatakan dalam bentuk string

$document = file_get_contents("surat.rtf");

// mereplace tanda %%%NAMA% dengan data nama dari form
$document = str_replace("%%NAMA%%", $nama, $document);

// mereplace tanda %%%ALAMAT% dengan data alamat dari form, dst
$document = str_replace("%%ALAMAT%%", $alamat, $document);

$document = str_replace("%%TGL%%", $tanggal, $document);
$document = str_replace("%%TEMPAT%%", $tempat, $document);
$document = str_replace("%%WAKTU%%", $waktu, $document);

// header untuk membuka file output RTF dengan MS. Word
// nama file output adalah undangan.rtf

header("Content-type: application/msword");
header("Content-disposition: inline; filename=undangan.rtf");
header("Content-length: " . strlen($document));
echo $document;

?>

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

 

Bagikan artikel ini jika bermanfaat !

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply