composer require phpoffice/phpword
假設咱們的Word名稱叫作 iamking.docx
,如圖php
空白項目中建立PHP文件,index.php
git
<?php /** * Created by PhpStorm. * User: smallForest<1032817724@qq.com> * Date: 2021/1/6 * Time: 17:44 */ require_once "vendor/autoload.php"; //引入TemplateProcessor use PhpOffice\PhpWord\TemplateProcessor; //實例化, 參數傳入模板文件地址 $templateProcessor = new TemplateProcessor('word/iamking.docx'); //替換(設置)變量值,我在測試的時候替換的字符比較長,這裏縮短了 $templateProcessor->setValue('kouhao', '我是測試口號!奧利給nice'); $templateProcessor->setValue('date', '2021-10-01'); //保存文件 $templateProcessor->saveAs('word/iamking2.docx');
平時用的最多的也就是Linux中操做,須要安裝一個libreoffice服務。本機環境centos7github
yum install libreoffice
假設咱們上一步保存的文件iamking2.docx
在/root/word
中。執行如下命令centos
cd /root/word/ libreoffice --convert-to pdf:writer_pdf_Export iamking2.docx
會在當前目錄生成一個同名的PDF文件iamking2.pdf
服務器
通過第二步覺得大功告成,其實否則。生成的PDF中的中文會被識別成小方塊,顯然不是咱們指望的結果。
錯誤緣由:Linux服務器缺乏中文字體
解決:進入Mac /System/Library/Fonts
目錄,找到這兩個字體文件
上傳到Linux的/usr/share/fonts/chinese
的目錄中composer
cd /usr/share/fonts //缺乏chinese目錄須要生成 mkdir chinese //上傳字體文件以後,修改權限 chmod 755 -R chinese fc-list
再次執行導出命令,字體就能夠了測試
libreoffice是單線程的,多個文件導出的時候要進行加鎖排隊,否則會出現意外錯誤
PHP執行腳本,須要考慮好。具體的實現細節本身衡量字體