濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法

PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法

熱門標(biāo)簽:電銷機(jī)器人便宜的有嗎 OMG地圖標(biāo)注app gps 地圖標(biāo)注軟件 中原區(qū)電話機(jī)器人價(jià)格 招標(biāo)自動(dòng)語音外呼系統(tǒng) 地圖標(biāo)注視頻廣告入駐 400電話鄭州申請(qǐng) ai電話機(jī)器人加盟代理 黔江400電話如何辦理

在線生成合同信息,一個(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ò)請(qǐng)求服務(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中下載的中文是亂碼,請(qǐng)自行安裝一個(gè)中文字體到服務(wù)器字體目錄即可

總結(jié)

到此這篇關(guān)于PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)PHP替換Word變量并導(dǎo)出PDF圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PHP中使用mpdf 導(dǎo)出PDF文件的實(shí)現(xiàn)方法
  • PHPExcel筆記, mpdf導(dǎo)出
  • 在PHP中讀取和寫入WORD文檔的代碼

標(biāo)簽:孝感 日照 北京 池州 阿里 濟(jì)源 那曲 哈密

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法》,本文關(guān)鍵詞  PHP,替換,Word,中,變量,并,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP替換Word中變量并導(dǎo)出PDF圖片的實(shí)現(xiàn)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    朝阳区| 灵丘县| 庆安县| 杭锦后旗| 盘山县| 固原市| 马公市| 竹北市| 沂水县| 新营市| 凭祥市| 新宁县| 阜平县| 嘉禾县| 馆陶县| 台州市| 凤山县| 石楼县| 贺州市| 观塘区| 梁山县| 望都县| 朝阳县| 康乐县| 宜都市| 尉犁县| 神木县| 抚顺县| 县级市| 察哈| 阜南县| 舒兰市| 万州区| 鄂温| 彭泽县| 马公市| 鹤庆县| 项城市| 墨竹工卡县| 尼勒克县| 偃师市|