PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法
在線生成合同信息,一個(gè) word 文件里面有些信息需要通過數(shù)據(jù)庫讀取計(jì)算出并填寫到 word 文檔中最終顯示在線 pdf 預(yù)覽功能,接下來我交大家如果實(shí)現(xiàn)該需求
2、接下來實(shí)現(xiàn)如何替換文檔內(nèi)容
我們新建一個(gè) aa.docx 的文檔,里面放了一個(gè)變量信息
3、接下來使用 php 來替換這個(gè)變量信息 代碼如下
... use PhpOffice\PhpWord\TemplateProcessor; ... $path = storage_path('aa.docx'); // 生成world 存放目錄 $filePath = storage_path('contract.docx'); // 聲明模板象并讀取模板內(nèi)容 $templateProcessor = new TemplateProcessor($path); // 替換模板內(nèi)容 $templateProcessor->setValue('contract', '北京乙方'); // 乙方 // 生成新的 world $templateProcessor->saveAs($filePath);
這樣我們就完成了 word 里面模板變量的替換是不是比較簡單呢
4、接下來我們需要處理 word 文檔轉(zhuǎn)為 pdf 我也在網(wǎng)上了查了比較多的資料,什么先轉(zhuǎn)為 html 然后通過 其它包的方式或者擴(kuò)展來轉(zhuǎn) pdf 確實(shí)都能實(shí)現(xiàn),但是有一點(diǎn) word 轉(zhuǎn)為 html 的時(shí)候格式會(huì)丟失這就和我們的需求有點(diǎn)偏離,后面轉(zhuǎn)換了方向,使用工具來把 word 轉(zhuǎn)為 pdf 這里我推薦的工具為 unoconv 安裝方式如下
apt-get install unoconv #如果報(bào)錯(cuò)請求服務(wù)器語言設(shè)置為 LANG=”en_US.UTF-8″ #使用命令把 word 轉(zhuǎn)為 pdf unoconv -f pdf aa.docx #這個(gè)時(shí)候在當(dāng)前目錄下就會(huì)有一個(gè) aa.pdf 的文件出來 #但是會(huì)發(fā)現(xiàn)如果是中文的情況下轉(zhuǎn)出來的 pdf 是亂碼該如何解決
5、pdf 生成出來中文亂碼解決方案,安裝一個(gè)中文字體
# 把電腦本機(jī)的宋體上傳到服務(wù)器字體目錄下 /usr/share/fonts 新建一個(gè)目錄 win 或者其它,把中文字體上傳到該目錄下 apt-get install mkfontscale #安裝這個(gè)工具 # 進(jìn)入到/usr/share/fonts/win/ 執(zhí)行命令 mkfontscale && sudo mkfontdir && sudo fc-cache -fv # 然后重啟服務(wù)器讓字體生效 reboot # 最后在執(zhí)行 unoconv -f pdf aa.docx # 看是不是中文亂碼的問題解決了
6、使用 php 的執(zhí)行 shell 的函數(shù)來調(diào)用該函數(shù)自動(dòng)生成即可
shell_exec('/usr/binunoconv -f pdf aa.docx')
注:如 php 執(zhí)行 shell 腳本命令不生效時(shí),此處的問題是用戶權(quán)限不正確導(dǎo)致不能執(zhí)行該命令 解決方案如下:
# 編輯 vim /etc/sudoers文件 root ALL=(ALL:ALL) ALL www-data ALL=(ALL) ALL %www-data ALL=(ALL) NOPASSWD:ALL zhouyao ALL=(ALL) ALL zhouyao ALL=(ALL) NOPASSWD:ALL # 增加用戶zhouyao 忽略執(zhí)行命令需要密碼 # 增加用戶組和用戶zhouyao useradd zhouyao -m # -m 創(chuàng)建家目錄 # 更改php-fpm的用戶和用戶組 cd /etc/php/7.1/fpm/pool.d vim www.conf user = zhouyao group = zhouyao # 退出保存 重啟php-fpm和nginx,此時(shí)在瀏覽器在執(zhí)行該文件可以看到pdf下載下來了 # 如pdf中下載的中文是亂碼,請自行安裝一個(gè)中文字體到服務(wù)器字體目錄即可
總結(jié)
到此這篇關(guān)于PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)PHP替換Word變量并導(dǎo)出PDF圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php文件后綴不強(qiáng)制為.php的實(shí)操方法
在本篇文章里小編給大家整理的是一篇關(guān)于php文件后綴不強(qiáng)制為.php的實(shí)操方法,有需要的朋友們參考下。2019-09-09php通過前序遍歷樹實(shí)現(xiàn)無需遞歸的無限極分類
這篇文章主要介紹了php通過前序遍歷樹實(shí)現(xiàn)無需遞歸的無限極分類,涉及基于CI框架針對(duì)數(shù)據(jù)庫的查詢與遍歷操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07PHP實(shí)現(xiàn)的多進(jìn)程控制demo示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的多進(jìn)程控制demo,涉及php信號(hào)處理與進(jìn)程控制相關(guān)操作技巧,需要的朋友可以參考下2019-07-07PHP中實(shí)現(xiàn)多語言支持的幾種方式總結(jié)
本給大家介紹了PHP中實(shí)現(xiàn)多語言支持的幾種方式總結(jié), 使用數(shù)組或關(guān)聯(lián)數(shù)組,使用gettext擴(kuò)展和使用第三方庫這三種方式,文章通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12PHP英文字母大小寫轉(zhuǎn)換函數(shù)小結(jié)
這篇文章主要介紹了幾個(gè)PHP英文字母大小寫轉(zhuǎn)換函數(shù),分為首字母大小寫轉(zhuǎn)換和所有字母大小寫轉(zhuǎn)換,需要的朋友可以參考下2014-05-05PHP使用pdo連接access數(shù)據(jù)庫并循環(huán)顯示數(shù)據(jù)操作示例
這篇文章主要介紹了PHP使用pdo連接access數(shù)據(jù)庫并循環(huán)顯示數(shù)據(jù)操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了php使用pdo進(jìn)行access數(shù)據(jù)庫連接、查詢、執(zhí)行sql語句、預(yù)處理等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-06-06PHP開發(fā)環(huán)境配置(MySQL數(shù)據(jù)庫安裝圖文教程)
下載完軟件后開始PHP開發(fā)環(huán)境的配置。注意是開發(fā)環(huán)境,不是服務(wù)器環(huán)境。2010-04-04