










php實現(xiàn)pdf,word,excel,ppt轉圖片需要采用幾個插件實現(xiàn)。
一、imagemagick插件
imagemagick插件是圖片處理插件,當下工作中圖片處理使用率越來越高,在圖像處理庫中,php imagick擴展是一款非常實用的工具,它可以對圖片進行格式轉換、調整大小、添加水印等多種操作。但是,由于其安裝過程相對較為復雜,很多開發(fā)者對該擴展的使用還存在一些困惑。
linux系統(tǒng)下命令安裝方式
sudo apt-get install imagemagick
當然如果服務器安裝有寶塔面板的話,可以在php管理中直接點擊安裝,如下圖:
imagemagick插件能把pdf轉成jpg或png圖片,php實現(xiàn)代碼如下:
// PDF 文件路徑 $pdf = 'exp.pdf'; $path = 'pdf/';//生成圖片目錄 $im = new Imagick(); $im->setResolution(300, 300); //設置分辨率 值越大分辨率越高 $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īng)成為了一項必不可少的工作,而眾所周知,最常用的文檔格式無疑是Microsoft Office的.doc和.docx格式,而在服務器端,我們無法通過Office軟件直接進行文檔的轉換和處理,這時候就需要借助于Unoconv工具來解決這個問題。本文將對Unoconv進行詳細講解,并給出一些實用的應用案例供大家參考。
Unoconv是一個基于OpenOffice核心結構的文檔轉換工具,通過Unoconv我們可以在服務器端進行大部分的Office文檔文件轉換操作,比如將.doc轉換成.docx格式,或是將.pdf轉換成.doc格式等?,F(xiàn)在,讓我們來看看具體怎么使用Unoconv來實現(xiàn)文檔轉換的過程。
首先,我們需要在服務器端安裝Unoconv。如果你的服務器是Debian/Ubuntu系統(tǒng),可以通過以下命令進行Unoconv安裝:
sudo apt-get install unoconv
如果你的服務器是Red Hat/CentOS系統(tǒng),則需要使用以下命令進行安裝:
sudo yum install unoconv libreoffice-headless
測試是否成功命令
convert -version
通過unoconv可以把大部分的Office文檔文件轉成pdf,代碼如下:
$origin_file = 'test.doc'; //原始文檔文件名稱 $target_file = 'test.pdf'; //轉換后文檔文件名稱 $command = 'unoconv -f pdf ' . $origin_file; //Unoconv命令 exec($command); //執(zhí)行Unoconv命令 rename('test.pdf', $target_file); //重命名
執(zhí)行以上還需把exec在禁用函數(shù)中取消,有的資料還建議把php.ini的safe_mode設置成On模式,我的是php 5.6版本是不需要這步。
但是在php執(zhí)行后發(fā)覺并沒有生成pdf文檔,而在shell命令下能夠正常生成。
把命令代碼加上參數(shù),查看報錯:
$command = 'unoconv -f pdf ' . $origin_file .' 2>&1'; //Unoconv命令 exec($command,$res, $rc); print_r($res);
這樣運行后提示如下:
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'
各類加權限,各類操作,均無果,正當想放棄的時候,看到KeyError:'PATH',是不是在WEB運行環(huán)境導至路徑問題呢,馬上改代碼:
$origin_file = 'word.docx'; //原始文檔文件名稱 $target_file = 'word.pdf'; //轉換后文檔文件名稱 $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內容是:
word.pdf內容是:
繼續(xù)解決問題。