Membuat Surat Otomatis dengan Template Ms. Word di Php

Share:

Halo semuanya, kembali lagi di sahretech. Baiklah pada kesempatan kali ini, saya akan berbagi tutorial bagaiaman cara mengenerate surat secara otomatis di php dengan menggunakan template dokumen word yang telah disediakan sebelumnya. Bagaimana caranya?, ayo ikuti tutorialnya di bawah ini.


Salah satu fitur yang cukup bermanfaat pada aplikasi perkantoran atau aplikasi surat menyurat adalah hadirnya fitur generate surat secara otomatis. Dengan fitur tersebut, kita tinggal memasukkan variabel-variabel yang sering diganti saja. Misalnya untuk membuat surat keterangan kuliah, dimana format surat ini sama untuk semua mahasiswa, hanya saja nama, alamat, nomor telpon dan beberapa variabel lainnya berbeda.

Nah, kali ini kita akan membuat fitur tersebut dengan bahasa pemrograman php, cara membuatnya cukup mudah. hal yang perlu kalian siapkan hanya format surat yang diketik dengan aplikasi Ms. Word lalu di simpan dalam ekstensi .rtf.

Baca Artikel Lain ✨
📰 1. Cara Mudah Membuat Pagination pada Laravel 8 read more
📰 2. Cara Membuat Fitur Login dan Registrasi pada Laravel 8 read more
📰 3. Cara Menggunakan Select2 dan Ajax agar Tidak Memberatkan Load Halaman read more


Cara Membuat Surat Otomatis dengan Rtf (Rich Text Format) dan Php

1. Pertama silahkan kalian siapkan dulu format surat yang akan kita jadikan bahan tutorial kali ini. Agar memudahkan kalian, silahkan ikuti format surat sederhana yang ada di bawah ini. Dan jangan lupa save as dokumen dengan ekstensi .rtf atau rich text format

cara membuat surat otomatis dengan php
Contoh surat 



Jika kalian perhatikan, setiap kata yang diawali dengan tanda # pada gambar di atas adalah kata yang akan kita ganti secara dinamis nantinya. Untuk membuat variabel, tidak harus menggunakan tanda #, kalian bisa menggunakan tanda lainnya atau tidak menggunakan tanda sama sekali.

2. Buatlah sebuah folder baru di dalam folder htdocs dengan nama latihan_generate_surat atau nama apapun yang kalian inginkan. Lalu silahkan masukkan dokumen rtf (rich text format) yang telah kalian buat sebelumnya.

3. Tahap selanjutnya, buatlah sebuah file index.php di dalam folder yang baru kita buat, lalu ikuti atau copy script yang di bawah ini.

    

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Latihan Membuat Surat Otomatis</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> </head> <body> <div class="container col-lg-5"> <div class="card mt-4"> <form action="proses.php" method="post"> <div class="card-body"> <div class="form-group mb-2"> <label for="">Kota</label> <input type="text" name="kota" class="form-control"> </div> <div class="form-group mb-2"> <label for="">Tanggal</label> <input type="date" name="tanggal" class="form-control"> </div> <div class="form-group mb-2"> <label for="">Kelas</label> <input type="text" name="kelas" class="form-control"> </div> <div class="form-group mb-2"> <label for="">Nama</label> <input type="text" name="nama" class="form-control"> </div> <div class="form-group mb-2"> <label for="">NIS</label> <input type="text" name="nis" class="form-control"> </div> <div class="form-group mb-2"> <label for="">Alamat</label> <textarea name="alamat" class="form-control" rows="3"></textarea> </div> <div class="form-group mb-2"> <label for="">Penyakit</label> <input type="text" name="penyakit" class="form-control"> </div> <div class="form-group mb-2"> <label for="">Nama Orangtua</label> <input type="text" name="namaortu" class="form-control"> </div> <div class="form-group mb-2"> <button type="submit" class="btn btn-success">Kirim</button> </div> </div> </form> </div> </div> </body> </html>

Script di atas adalah contoh form sederhana dengan inputannya sesuai dengan template yang telah kita buat sebelumnya. Dan untuk mempercantik form tersebut saya menggunakan bootstrap 5. Jika kalian jalankan maka tampilan formnya akan tampak seperti gambar di bawah ini.

cara membuat surat otomatis dengan php
Halaman form




4. Selanjuntya kita, buatlah file baru dengan nama proses.php file ini berfungsi untuk mengambil data dar dari file index.php dan memasukannya ke dalam file rtf Ms. word yang kita buat, ikuti atau copy script di bawah ini

    

<?php // mengambil data dari yang dikirim dari form index.php $kota = $_POST['kota']; $tanggal = $_POST['tanggal']; $kelas = $_POST['kelas']; $nama = $_POST['nama']; $nis = $_POST['nis']; $alamat = $_POST['alamat']; $penyakit = $_POST['penyakit']; $namaortu = $_POST['namaortu']; //mengambil dokumen surat $document = file_get_contents("SURAT.rtf"); //mereplace semua kata yang ada di file dengan variabel $document = str_replace("#KOTA", $kota, $document); $document = str_replace("#TANGGAL", date('d-m-Y', strtotime($tanggal)), $document); $document = str_replace("#KELAS", $kelas, $document); $document = str_replace("#NAMA", $nama, $document); $document = str_replace("#NIS", $nis, $document); $document = str_replace("#ALAMAT", $alamat, $document); $document = str_replace("#PENYAKIT", $penyakit, $document); $document = str_replace("#ORTU", $namaortu, $document); // header untuk membuka file yang dihasilkan dengna aplikasi Ms. Word // nama file yang dihasilkan adalah surat izin.docx header("Content-type: application/msword"); header("Content-disposition: inline; filename=surat.doc"); header("Content-length: " . strlen($document)); echo $document; ?>

Penjelasan: Pertama kita tangkap semua data yang dikirim dari index.php. Kita ambil file rtfnya dan kita replace dengan variabel yang telah kita input sebelumnya. Untuk penjelasan sudah saya tulis pada script di atas. Tapi jika kalian masih sulit untuk memahaminya silahkan tanya langsung ke saya melalui form komentar di bawah post ini.


5. Saatnya kita uji coba, silahkan save project kalian. Jika berhasil maka tampilannya akan tampak seperti gambar di bawah ini.

cara membuat surat otomatis dengan php
Hasil Akhir


Bagaimana?, cukup mudah bukan. Tidak perlu menggunakan library, kalian langsung bisa membuat fitur yang sangat powerful ini hanya dengan file rtf dan sedikit script php. Saatnya kalian kembangkan imajinasi kalian, bisa kalian tambahkan database atau disematkan ke aplikasi perkantoran yang kalian buat.


Kekurangan

Ada satu hal yang perlu saya bahas, yaitu kekurangan dari si file rtf ini. Ternyata kita tidak bisa memasukan file gambar, tabel, atau seperti kop surat ke dalam file rtf, jika dicoba akan banyak menampilkan pesan yang tidak jelas saat di download. Sebagai gantinya kita perlu menggunakan plugin atau library tambahan. Salah satu librarynya yang bisa kalian gunakan adalah library phpword.


Ok, sekian tutorial singkat kali ini tentang cara memuat surat otomatis dengan template microsoft word dan php. Semoga bermanfaat, jika ada yang ingin ditanyakan silahkan tinggalkan pesan kalian di kolom komentar di bawah postingan ini. Sampai jumpa di tutorial pemrograman menarik lainnya dari sahretech.

27 comments:

  1. Mengapa saat didownload dan dibuka malah timbul pesan yang banyak tidak seperti ditutor?

    ReplyDelete
    Replies
    1. sudah saya coba kembali dan alhamdulillah bisa. Jadi pastikan format dokumennya adalah RTF (rich text format) dan diletakkan di dalam folder yang sama dengan file lainnya. Selain itu copy saja semua script agar tidak terjadi typo dan error nantinya. Jika semua saran sudah dikerjakan tapi masih terjadi masalah, coba masnya kirim pesan errornya ke saya. Terima kasih sebelumnya sudah berkunjung :D

      Delete
    2. maaf sedikit info, tutorial ini hanya dapat digunakan untuk membuat surat sederhana. Jadi klo menggunakan kop, tabel, atau gambar akan otomatis jadi error. Ada tutorial lain untuk membuat surat bisa diprint normal dengan menggunakan kop, tabel, atau gambar tapi belum saya tulis.

      Delete
    3. maaf mau tanya, saya coba ambil data dari database, tapi kenapa ya tidak semua fieldnya terbaca? dan juga kenapa hanya bisa 1 halaman? padahal data ditabelnya lebih dari 1, mohon pencerahannya, trims

      Delete
    4. field database harus sesuai dengan tanda di file rtfnya, lalu disesuaikan juga dengan script yang ada di file proses.php. saran saya coba untuk mengikuti contoh, lalu coba tambahkan 1 data, lalu tambah 1 data lagi dan seterusnya

      Delete
    5. $query = mysqli_query($kon, 'SELECT * FROM tb_kirim');
      $result = array();
      while ($data = mysqli_fetch_array($query)) {
      $nama = $data['nm'];
      $alamat = $data['alamat'];
      $rw = $data['rw'];
      $rt = $data['rt'];
      $kel = $data['kelurahan'];
      $kec = $data['kecamatan'];
      }

      $document = file_get_contents("SURAT.rtf");
      $document = str_replace("#NAMA", $nama, $document);
      $document = str_replace("#ALAMAT", $alamat, $document);
      $document = str_replace("#RT", $rt, $document);
      $document = str_replace("#RW", $rw, $document);
      $document = str_replace("#KEL", $kel, $document);
      $document = str_replace("#KEC", $kec, $document);

      kurang lebih gitu, nah untuk yang alamatnya selalu kosong datanya, kenapa? dan tidak bisa jd 2 halaman juga hehe

      Delete
    6. pastikan juga hastag alamat dan seterusnya juga dibuat di dalam file rtfnya. biar lebih jelas bisa kirim sc errornya di fanspage

      klo lebih dari 2 halaman saya belum coba, bisa jadi ini kekurangan file rtf, untuk mencoba 2 halaman lebih bisa menggunakan library phpword

      Delete
  2. hai kak, maaf kok punya saya banyak teks yah :" ? padahal sudah mengikuti tutorial

    ReplyDelete
    Replies
    1. sudah saya coba kembali dan alhamdulillah bisa. Jadi pastikan format dokumennya adalah RTF (rich text format) dan diletakkan di dalam folder yang sama dengan file lainnya. Selain itu copy saja semua script agar tidak terjadi typo dan error nantinya. Jika semua saran sudah dikerjakan tapi masih terjadi masalah, coba masnya kirim pesan errornya ke saya lewat fanspage. Terima kasih sebelumnya sudah berkunjung :D

      Delete
    2. maaf sedikit info, tutorial ini hanya dapat digunakan untuk membuat surat sederhana. Jadi klo menggunakan kop, tabel, atau gambar akan otomatis jadi error. Ada tutorial lain untuk membuat surat bisa diprint normal dengan menggunakan kop, tabel, atau gambar tapi belum saya tulis.

      Delete
  3. hai kak, kok punya saya pas bentuk doc malah huruf banyak yah ? padahal saya sudah mengikuti semuanya

    ReplyDelete
    Replies
    1. tanya langsung di fb saja, sc script dan dokumennya juga

      Delete
    2. maaf sedikit info, tutorial ini hanya dapat digunakan untuk membuat surat sederhana. Jadi klo menggunakan kop, tabel, atau gambar akan otomatis jadi error. Ada tutorial lain untuk membuat surat bisa diprint normal dengan menggunakan kop, tabel, atau gambar tapi belum saya tulis.

      Delete
  4. kalau biar tulisannya tebal gimana bang?

    ReplyDelete
  5. Min biar format surat saat di save bisa diatur ga namanya? Misal mau di save otomatis ngikutin nama gitu?

    ReplyDelete
    Replies
    1. tinggal ganti seperti ini mas
      header("Content-disposition: inline; filename=".$variabel.".doc");

      Delete
  6. maaf min, kalau hasilnya mau di simpan pada drive gimana caranya, misalnya di simpan pada folder tertentu ?

    ReplyDelete
  7. misalkan kita punya sebuah data , terus kita bisa ga bang menggunakan satu tamplat buat berbagai penerima dengan cara mengambil data

    ReplyDelete
    Replies
    1. bisa, masnya bikin database penerima. kemudian, buat fungsi untuk mengirim data ke semua penerima. cara paling sederhana, masnya bisa melakukan looping pengiriman data ke penerima yang berbeda.

      Delete
  8. mas mau tanya, kalau cara looping per halaman gimana ya? misalkan ada 10 data, dan per datanya tampil per halaman, jadi ada total 10 halaman dalam 1 file doc

    ReplyDelete
  9. izin bertanya apakah bisa outputnya file pdf dan bagaimana tutorialnya. Terimakasih

    ReplyDelete

Jangan lupa kasih komentar ya!. Karena komentar kalian membantu kami menyediakan informasi yang lebih baik

Tidak boleh menyertakan link atau promosi produk saat berkomentar. Komentar tidak akan ditampilkan. Hubungi 081271449921(WA) untuk dapat menyertakan link dan promosi