PHP程式實作Word轉PDF
我們常常在工作中,都會碰到套表的需求,客戶常常都會提供一個word範本,然後要透過程式去填這個範本,最後還要再轉PDF寄送,格式比較不會跑掉,以下就介紹該如何達成這個困難的需求
安裝unoconv :
- 先安裝這個件套件在linux上,以ubuntu為例
apt-get install unoconv - 接下來下這一個命令就可以讓demo的doc轉pdf了
/usr/bin/unoconv -f pdf demo.docx
套用資料到文件 :
- 先下載這個大大寫的library,使用這個可以輕易把資料套到word裡面
https://github.com/iCircle/docxTemplateInPHP
- 建立一個word.docx的檔案
- 只要文件內容有放 {VariableName} 這類的字串,表示要用動態的資料,然後檔案叫demo.docx
- 接下來只要在php這樣做就行了
include_once('./docxtemplate.class.php'); $docx = new DOCXTemplate('./demo.docx'); $docx->set(VariableName,"把資料寫進word裡面"); $docx->saveAs('AfterDemo.docx');
- 然後開啟AfterDemo.docx,就會看到{VariableName} 被取代成把資料寫進word裡面,很簡單吧。
將Word轉PDF :
- 首先php是無法直接呼叫unoconv這個命令的,因為安全性的關係,所以我們要在linux上面做一點小小的手腳
- 先到這個地方新增權限讓php可以執行unoconv
sudo vi /etc/sudoers.d/www-data
接下來新增這一行命令在該檔案裡面
www-data ALL=NOPASSWD: /usr/bin/unoconv
注意:因為web service的執行user是www-data,如果你們的web service的user有改,這邊的文字也要跟著改唷
- 接下來PHP程式只要加上這一行就行了,這樣就可以將word用php轉成pdf了
exec(“sudo /usr/bin/unoconv -f pdf ‘AfterDemo.docx");
我要留言