php編輯Word並轉爲Pdf的實戰記錄

php操做Word進行模板變量替換

安裝PHP操做Word的擴展

composer require phpoffice/phpword

Word模板

假設咱們的Word名稱叫作 iamking.docx,如圖
imagephp

PHP代碼替換

空白項目中建立PHP文件,index.phpgit

<?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');

將Word轉爲PDF文檔

平時用的最多的也就是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目錄,找到這兩個字體文件
image
上傳到Linux的/usr/share/fonts/chinese的目錄中composer

cd /usr/share/fonts
//缺乏chinese目錄須要生成
mkdir chinese
//上傳字體文件以後,修改權限
chmod 755 -R chinese
fc-list

image
再次執行導出命令,字體就能夠了測試

注意

libreoffice是單線程的,多個文件導出的時候要進行加鎖排隊,否則會出現意外錯誤
PHP執行腳本,須要考慮好。具體的實現細節本身衡量字體

code

https://github.com/SmallFores...ui

相關文章
相關標籤/搜索