三级全黄做爰电影_夫妻之间那些事_啊啊啊啊好爽视频_国产精品xxxx喷水欧美_色一情一乱一伦麻豆_国产精品美乳一区二区免费_亚洲综合av在线在线播放_人与禽伦性了_黄色软件色多多_av在线免费观看网址

php實(shí)現(xiàn)pdf,word,excel,ppt轉(zhuǎn)圖片的功能
發(fā)表人:金馬 | 2023-11-12

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)擊安裝,如下圖:

image.png

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)容是:

image.png

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

image.png

繼續(xù)解決問題。

我來說兩句(0)
:zui: :wink: :twisted: :roll: :oops: :mrgreen: :love: :lol: :jidong: :idea: :han:
發(fā)表評論(Ctrl+Enter)
—— 金馬科技公眾號 ——
十二年 行業(yè)積累

砥礪前行路上,有您關(guān)注,相聚相研共話成長!

如有意向,請與我們聯(lián)系

辦公電話:0774-3838278 / QQ:154727262 / 微信:wztmma