Beli Modem Wavecom Untuk SMS Gateway. FREE E-book Gammu + FREE Ongkos kirim !!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Script PHP untuk Membuat Dokumen RTF


November 5th, 2008 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

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.

Buat Surat Undangan

Nama Penerima Surat
Alamat Penerima Surat
Tanggal Acara
Tempat Acara
Waktu Acara

[/sourcecode]

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


// 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;

?>
[/sourcecode]

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

VN:F [1.9.3_1094]
Rating: 9.3/10 (3 votes cast)
Script PHP untuk Membuat Dokumen RTF, 9.3 out of 10 based on 3 ratings
Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



Beberapa artikel terkait


Share this article on:

Kata kunci: PHP - rtf -


Ada 38 komentar dalam artikel ini.

  1. kereayem says:

    thk mas, artikelnya.. , dicoba.. tes tes ketes ketes

  2. zul says:

    kok ketika generate file rtf, isinya adalah string yang ketika dibuka di notepad? Kira2 kenapa ya?

    Thanks

  3. rosihanari says:

    to zul: anda pakai office versi berapa? trus… coba cek di perintah header() mungkin ada yg salah

  4. ndholkondho says:

    @zul : saya sudah mencoba pake dreamweaver, pertama kali muncul stringnya saja, ternyata tidak usah saya masukkan script tsb ke komponen page seperti , dsb, Jadi dihilangkan semua saja tag tsb. Sudah berhasil dalam kasus saya untuk memanggil recordset yang dideklarasikan di dreamweaver. Cuman untuk memanggil data yang di ‘repeat” masih belum bisa. Tidak lupa makasih utk Mas Rosihan

  5. iyank says:

    artikel di atas sangat menarik perhatian saya.
    maaf, ada Tapinya. karena saya masi bingun, kalo bisa disertakan dengan image atau seperti tutorial yang ada hasilnya.maksunya, ada contoh hasil tampilannya ? trus kira2 pake database tidak?

  6. rosihanari says:

    to iyank: ya mas.. untuk artikel2 yang baru sudah saya kasih screen shot tampilannya. Memang untuk artikel yang lama kebanyakan belum ada screen shotnya. Thanks ata masukannya.

  7. hartiono says:

    salam kenal mas, makasih infonya mas
    .-= hartiono´s last blog ..Funny Sport Moments =-.

  8. wiwin says:

    artikelnya menarik banget..kebetulan tugas akhir saya berhubungan dengan RTF…oh ya mas…kira2 boleh artikelnya ditambah lagi dunk…yang membbahas tentang perintah-perintah pengaturan format RTF…thanks b4

  9. crizhna says:

    mas…kalo di excel bagaimana caranya ??? apakah sama??

    terimah kasih

  10. donny says:

    salam,

    mas,script php utk mencetak dalam arti “ngeprint” file apa ya mas?
    dan gimana caranya saat menampilkan hasil/print preview setelah kita mengisi form.mohon “wejanga”-nya..utk skripsi mas…

    maturnuwun,terimakasih…

  11. jack says:

    ini hanya untuk windows ya? kalo web servernya linux trus pake open office gimana? thx.

  12. rosihanari says:

    @jack: iya mas, untuk linux belum nemu formulanya.. :-)

  13. herry setiawan says:

    saya sangat tertarik dengan artikel RTF, yang ingin saya tanyakan bagaimana cara edit text pada file rtf , setelah dipindahkan ke word doc.
    tks bantuannya ..salam..

  14. rosihanari says:

    @harry setiawan: maksudnya gimana yah?

  15. ogi says:

    pak saya mencoba buat file rtf menggungakan php ,,swaktu di buka teks file rtf nya jadi berantakan ,,,itu kenapa ya pak

  16. rosihanari says:

    @ogi: mungkin versi MS Officenya juga ada pengaruh mas. Saya coba di Office 2003 gak ada masalah mas.

  17. ogi says:

    mau tanya lg pak….wktu saya coba buat file rtf ,yang pertama saya buat file rtf nya swaktu d bka di ms.word2007 bgus keluarannya..waktu saya buat file yang kedua hasil keluaran di ms.word nya mncul karakter2 aneh trus di file rtf ny saya kasih gmbar ,swktu di bka gmbar ny ga mncul

  18. rosihanari says:

    @ogi: memang RTF kurang bagus untuk membuat report mas. Kalo gambarnya dihilangin bisa?

  19. ogi says:

    pak klo nampilin looping table di file rtf nya tanpa menggunakan str_replace bagaimana cara nya

  20. rosihanari says:

    @ogi: sulit mas kalo looping di dalam RTF soalnya nanti format filenya bisa2 rusak. Mending pakai PDF saja mas.

  21. hous3b4d says:

    mo tanya nih…
    1. klo templateN .doc bisa g y..??
    2. trus kalo bkin bentuknya tabel giman? tetep pke template juga kan..?

    3. trus gmn klo templatenya .doc dan isinya tabel yg isinya dinamis? karena mengambil data dari database MySQL, isi tabelnya trdiri dari 10 kolom dan rownya mengikuti? Q bkin pke .rtf tabelnya jadi, tapi kaku ky bkin tabel pke dreamweaver dan tampilannya di MS Wordnya ke view webpage. Q pernah liat hasilnya .doc dan stylenya tuh bs bold, italic, dll. dan style tabelnya ky kita bkin langsung dMS Word…

    tlong penjelasannya y…

  22. rosihanari says:

    @hous3b4d: kalo dari .doc gak bisa mas…

  23. hous3b4d says:

    klo .rtf tpi nanti hasilnya brupa tbel yg rownya dinamis gmn??
    apakh ttp pke tag html …?

  24. rosihanari says:

    @hous3b4d: wah kalo pake RTF untuk tabel dinamis sepertinya sulit mas, mending pakai PDF saja.

  25. hous3b4d says:

    nah masalahnya itu…
    Q tuh mw bkin backup data, dlm ksus ini untuk rekap data nilai…
    klo .PDF udah ada, .XLS udah juga (liat script dr blog ini…).
    klo tigl RTF, biar biar komplit.. ^.^

    susah y?? ywdh ap boleh buat..

  26. Huddy says:

    bagus sekali artikelnya.
    saya udah mencoba dan berjalan dengan baik. kendala yang saya alami adalah data nomor dengan format misal 0.0001 tidak bisa tampil di doc rtf, mohon solusinya.

  27. hous3b4d says:

    ya akhirnya saya bkin laporan .rtfnya yg isi tabel dinamis, pke tag html..

    trs mo tanya lg nih. kok marginnya g pengaruh y ama settingan margin di templatenya?? pdahl sy seting templatenya dg margin 1cm 1cm 1cm 1cm…

  28. chiprodoy says:

    mas gimana kalo templatenya panjang.. jadi template yg bakal di replace melebihi memory limit.. ada solusi nggak mas ?

  29. rosihanari says:

    @chiprodoy: melebihi memory limit gimana maksudnya mas?

  30. bayu says:

    mas saaya udah coba neeh, keren banget, tapi ada masalah gimana kalau seandainya saya mau nampilkan data 1 tabel tetep menggunakan rtf bukan exel, td saya sudah coba tp hanya bisa nampilkan 1 record saja
    thnks mohon penjelasan,,,,,

  31. bayu says:

    mas kalo yg mw ditampilkan data 1 tabel gmn?
    tapi tetep pake rtf?

  32. puja surya says:

    mas…saya puja…saya mau bertanya mas…saya udah bikin rtf templatenya. ke wordnya bisa..tapi isinya aneh…karena saya manggil dari database..bukan nginput dulu seperti mas…
    kira2 bisa di ulik ga mas?mohon pencerahannya…deadline soalnya mas

  33. Ari Safari says:

    salam, mas rosihan. Mohon pencerahan mas, boleh kasih info untuk insert image ke file RTF-nya mas. hatur nuhun

  34. dwiz says:

    numpang nanya pak ari..kalo mau nampilin gambar script nya gimana?? saya bikin datanya dah keluar cuma kalo mau nampilin gambar ngga bisa..mohon petunjuknya..terima kasih

  35. ind says:

    kalo nampil gambar dari database bisa ngga,,kalo bisa tolng petunjuknya…

  36. rosihanari says:

    @ind: wah blm pernah coba tuh.



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word