1. PHP

PHP – Membuat dokumen word dari template

Untuk kasus tertentu kita mungkin perlu untuk membuat sebuah dokumen misalnya word (docx) menggunakan PHP. Pada artikel ini kita akan mencoba membahas bagaimana membuat dokumen word dari template yang telah disediakan dengan menggunakan PHP.

Contoh kasus, kita perlu generate sebuah surat dalam format docx. Sebuah surat biasanya memiliki template tertentu, hanya beberapa konten saja yang bersifat dinamis. Karena itu, dibandingkan dengan generate semua konten untuk file ini menggunakan PHP, akan lebih tepat jika kita menyiapkan sebuah template yang kemudian kita replace beberapa konten sesuai dengan nilai yang diperlukan.

Untuk mengatasi kasus diatas, kita akan menggunakan library PHPWord untuk mereplace nilai-nilai tertentu yang didefinisikan pada template dokumen.

Install PHPWord

Sebelum menginstall library PHPWord, ada beberapa requirement yang harus kita penuhi. Pastikan requirement dibawah ini telah terinstal.

Untuk install library PHPWord, gunakan perintah composer dibawah ini:

composer require phpoffice/phpword

Setelah berhasil menginstal library PHPWord, kita harus menyiapkan template dokumen yang akan kita gunakan sebagai template utama dalam generate surat.

Buat template word dengan format docx, kemudian buat key dengan format ${search_pattern}, yang nantinya key ini akan di replace dengan value yang kita kirim dari PHP.

Template

Pada contoh diatas, kita mendefinisikan beberapa search pattern, pattern ini akan kita gunakan sebagai array key di PHP yang nantinya akan di replace berdasarkan value yang diberikan.

Selanjutnya, buat sebuah file php misalnya kita beri nama index.php, kemudian tambahkan kode dibawah ini.

<?php

require 'vendor/autoload.php';

$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('template.docx');

$templateProcessor->setValues([
    'number' => '212/SKD/VII/2019',
    'name' => 'Alfa',
    'birthplace' => 'Bandung',
    'birthdate' => '4 Mei 1991',
    'gender' => 'Laki-Laki',
    'religion' => 'Islam',
    'address' => 'Jln. ABC no 12',
    'date' => date('Y-m-d'),
]);

header("Content-Disposition: attachment; filename=template.docx");

$templateProcessor->saveAs('php://output');

Pada contoh diatas, kita memiliki beberapa array item yang kita definisikan dalam method setValues(). Nilai-nilai inilah yang nantinya akan kita gunakan untuk mereplace pattern yang kita atur dalam template dokumen.

Search PatternReplacement Key
${number}number
${birthplace}birthplace
${birthdate}birthdate
${gender}gender
${religion}religion
${address}address
${date}date

Dengan kata lain, untuk membuat dokumen word dari template, kita perlu mendefiniskan search pattern pada dokumen word dengan format ${pattern}, dan pada PHP kita akan menjadikan pattern sebagai array key.

Menyimpan File

Untuk kasus tertentu juga, kita perlu untuk menyimpan file hasil generate dari pada mendownload file secara langsung.

header("Content-Disposition: attachment; filename=template.docx");
$templateProcessor->saveAs('php://output');

Pada contoh kode diatas, kita akan langsung mendownload file hasil generate. Jika kita hanya perlu untuk menyimpan file tersebut, kita hanya perlu menghapus baris header pada kode diatas, kemudian ganti php://output menjadi path dimana kita akan menyimpan file ini.

People reacted to this story.
Show comments Hide comments
Comments to: PHP – Membuat dokumen word dari template
  • March 11, 2020

    for use this method, where i save the docx template ?

    Reply
    • March 11, 2020

      You can put the template anywhere in your project directory. Just make sure you use the correct path to the template.

      $templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('/path/to/template.docx');
      
      Reply
Write a response

Your email address will not be published. Required fields are marked *

Attach images - Only PNG, JPG, JPEG and GIF are supported.