php實(shí)現(xiàn)pdf,word,excel,ppt轉(zhuǎn)圖片需要采用幾個(gè)插件實(shí)現(xiàn)。
一、imagemagick插件
imagemagick插件是圖片處理插件,當(dāng)下工作中圖片處理使用率越來越高,在圖像處理庫中,php imagick擴(kuò)展是一款非常實(shí)用的工具,它可以對圖片進(jìn)行格式轉(zhuǎn)換、調(diào)整大小、添加水印等多種操作。但是,由于其安裝過程相對較為復(fù)雜,很多開發(fā)者對該擴(kuò)展的使用還存在一些困惑。
linux系統(tǒng)下命令安裝方式
sudo apt-get install imagemagick
當(dāng)然如果服務(wù)器安裝有寶塔面板的話,可以在php管理中直接點(diǎn)擊安裝,如下圖:

imagemagick插件能把pdf轉(zhuǎn)成jpg或png圖片,php實(shí)現(xiàn)代碼如下:
// PDF 文件路徑
$pdf = 'exp.pdf';
$path = 'pdf/';//生成圖片目錄
$im = new Imagick();
$im->setResolution(300, 300); //設(shè)置分辨率 值越大分辨率越高
$im->setCompressionQuality(100);
$im->readImage($pdf);
foreach ($im as $k => $v) {
$v->setImageFormat('jpg');
$fileName = $path . md5($k . time()) . '.jpg';
if ($v->writeImage($fileName) == true) {
echo $fileName;
}
}二、unoconv插件
隨著科技的不斷進(jìn)步,文檔的處理已經(jīng)成為了一項(xiàng)必不可少的工作,而眾所周知,最常用的文檔格式無疑是Microsoft Office的.doc和.docx格式,而在服務(wù)器端,我們無法通過Office軟件直接進(jìn)行文檔的轉(zhuǎn)換和處理,這時(shí)候就需要借助于Unoconv工具來解決這個(gè)問題。本文將對Unoconv進(jìn)行詳細(xì)講解,并給出一些實(shí)用的應(yīng)用案例供大家參考。
Unoconv是一個(gè)基于OpenOffice核心結(jié)構(gòu)的文檔轉(zhuǎn)換工具,通過Unoconv我們可以在服務(wù)器端進(jìn)行大部分的Office文檔文件轉(zhuǎn)換操作,比如將.doc轉(zhuǎn)換成.docx格式,或是將.pdf轉(zhuǎn)換成.doc格式等。現(xiàn)在,讓我們來看看具體怎么使用Unoconv來實(shí)現(xiàn)文檔轉(zhuǎn)換的過程。
首先,我們需要在服務(wù)器端安裝Unoconv。如果你的服務(wù)器是Debian/Ubuntu系統(tǒng),可以通過以下命令進(jìn)行Unoconv安裝:
sudo apt-get install unoconv
如果你的服務(wù)器是Red Hat/CentOS系統(tǒng),則需要使用以下命令進(jìn)行安裝:
sudo yum install unoconv libreoffice-headless
測試是否成功命令
convert -version
通過unoconv可以把大部分的Office文檔文件轉(zhuǎn)成pdf,代碼如下:
$origin_file = 'test.doc'; //原始文檔文件名稱
$target_file = 'test.pdf'; //轉(zhuǎn)換后文檔文件名稱
$command = 'unoconv -f pdf ' . $origin_file; //Unoconv命令
exec($command); //執(zhí)行Unoconv命令
rename('test.pdf', $target_file); //重命名執(zhí)行以上還需把exec在禁用函數(shù)中取消,有的資料還建議把php.ini的safe_mode設(shè)置成On模式,我的是php 5.6版本是不需要這步。
但是在php執(zhí)行后發(fā)覺并沒有生成pdf文檔,而在shell命令下能夠正常生成。
把命令代碼加上參數(shù),查看報(bào)錯(cuò):
$command = 'unoconv -f pdf ' . $origin_file .' 2>&1'; //Unoconv命令 exec($command,$res, $rc); print_r($res);
這樣運(yùn)行后提示如下:
Traceback (most recent call last): File "/usr/bin/unoconv", line 1205, in <module> run() File "/usr/bin/unoconv", line 1115, in run office_environ(of) File "/usr/bin/unoconv", line 202, in office_environ os.environ['PATH'] = realpath(office.basepath, 'program') + os.pathsep + os.environ['PATH'] File "/usr/lib64/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: 'PATH'
各類加權(quán)限,各類操作,均無果,正當(dāng)想放棄的時(shí)候,看到KeyError:'PATH',是不是在WEB運(yùn)行環(huán)境導(dǎo)至路徑問題呢,馬上改代碼:
$origin_file = 'word.docx'; //原始文檔文件名稱 $target_file = 'word.pdf'; //轉(zhuǎn)換后文檔文件名稱 $command = 'PATH=/sbin:/bin:/usr/sbin:/usr/bin unoconv -f pdf ' . $origin_file ." 2>&1"; //Unoconv命令 exec($command,$res, $rc); //執(zhí)行Unoconv命令
最終看到了生成的word.pdf文件
下載文件打開一看,又出問題了,文檔是亂碼的,如下圖:
word.docx內(nèi)容是:

word.pdf內(nèi)容是:

繼續(xù)解決問題。