Javan Cipta Solusi
Published in

Javan Cipta Solusi

[PHP] Issue Bullet List pada Export Document Word

Dalam pembuatan suatu aplikasi fitur export document atau cetak document seperti file .doc ataupun .docx sangatlah penting, karena terkadang ada kebutuhan untuk suatu legalitas dalam bentuk fisik, membuat dokumen Microsoft Word dalam PHP bisa menjadi tantangan, dimana terkadang ada kasus kita harus melaukan export document yang memiliki style yang cukup rumit seperti memiliki header, footer, dsb, untuk menangani kasus seperti ini sebenarnya kita bisa menggunakan template document yang style-nya sudah diatur, cara ini memiliki konsep dimana kita akan mereplace variable — variable yang telah kita didefiniskan pada template document dengan data yang kita inginkan, dan untuk melakukan hal ini, di PHP ada library yang bisa kita gunakan yaitu library PHPWord.

PHPWord sendiri adalah bagian dari library PHPOffice yang memungkinkan untuk membaca dan menulis dokumen dalam berbagai format file dari PHP. Format yang didukung adalah HTML, ODText, PDF, RTF dan Word2007

Contoh penggunaan PHPword untuk melalukan export document adalah sebagai berikut :

Gambar 1

Dalam Gambar 1, kita dapat melihat template bernama Templat.docx yang dibuat di Microsoft Word. Seperti yang di lihat date, name, description dan address dibuat dari string placeholder dalam bentuk ${placeholder}

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

$templateProcessor->setValue('date', date("d-m-Y"));
$templateProcessor->setValue('name', 'Nanda');
$templateProcessor->setValue('address', 'Jl. Kanayakan');
$templateProcessor->setValue('description', 'Ini adalah konten dokumen');

$templateProcessor->saveAs('MyWordFile.docx');

Kode PHP diatas adalah contoh pengimplementasian export document menggunakan PhpWord, dimana variable — variable yang telah di definisikan di template document word sebelumnya akan di replace dengan data yang kita inginkan

Gambar 2

Pada Gambar 2, menunjukan hasil export document dimana variable — variable yang telah di definisikan di template berhasil berubah

Dengan penggunaan template untuk export document seperti yang telah di contohkan, pembuat fitu export document untuk aplikasi yang sedang kita bangun menjadi lebih mudah, akan tetapi ada issue saat kita melakukan cara ini yaitu issue bullet list pada export document. Ya, issue ini terjadi ketika kita memasukan data yang berupa bullet list ke dalam template yang telah kita buat, dimana list yang harusnya berupa bullet list berubah menjadi number list

Issue bordered list pada export document terjadi karena cara kerja Microsoft Word, dimana MS Word akan mendefinisikan style — style yang akan digunakan di document pada saat document dibuat, sehingga dalam kasus export document menggunakan template, data yang baru dimasukan akan menggunakan style yang sudah di definisikan pada saat pembuatan template.

sebagai gambaran proses export document dimulai dari data yang berupa HTML di covert menjadi OpenXML sehingga dapat di baca oleh document word, seperti di tunjukan oleh Gambar 3 dan kode OpenXML dibawah

Gambar 3
<w:pPr>
<w:pStyle w:val='ListParagraph'/>
<w:numPr>
<w:ilvl w:val='0'/>
<w:numId w:val='1'/>
</w:numPr>
<w:rPr>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
</w:rPr>
<w:t xml:space='preserve'>bullet list 1</w:t>
</w:r>
</w:rPr>

Pada kode openxml property numId menunjukan id yang sebenarnya merujuk pada style pada document, dan sebagai catatan numId ini dynamis increment mengikuti jumlah list yang ada di document, jadi dikarenakan id yang dynamis dan belum terdefinisi di style document sehingga bullet list ini di anggap sebagai number list.

--

--

Business Process Optimization Partner. Contact us to help you optimize your business using technology.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store