剛開始的時候是客戶的活兒,真的是沒有想到,被這樣一個方法給卡住了,真是醉了,經過漫長的一周,終於搞定了這個問題,以下就來給大家介紹以下這個方法把。能方便大家。
【注】本方法也可以將 ppt 轉為圖片(execl 沒試過,有時間你們可以試一下)
(直接轉換沒辦法,所以找了個折中的辦法,先轉成pdf文件,然后再將pdf轉圖片)
先說一下環境的安裝(我也是經歷了好幾次失敗才總結出環境的安裝的,*表示必須的操作,如果是大神,那么請繞道)
- 服務器環境:centos7
- *集成環境:寶塔
- 安裝完寶塔后,選擇安裝LNMP的集成環境(php的版本最好安裝5.6及以上)
- 這里需要注意的就是必須使用 nginx 的環境(別用apache,坑太多),還有就是使用寶塔的集成環境,別問我為什么,因為坑太多,只要時間充足,工作不限時長,你也可以自己嘗試的安裝各種環境試試(為了快速,就按照我的環境安裝步驟走)
- 等待。。。
- 環境安裝完成之后,我們進入寶塔的軟件商店,點擊php后面的設置,然后給php安裝imagemagick擴展
-
等待這個php擴展的安裝完成
-
安裝完成之后,我們開始給服務器安裝libreoffice
- 直接執行下面的代碼就可以(第一個安裝好就ok了,后面兩個安裝的時候可能會報錯,但是只要第一個安裝好了,其實沒什么大的影響)
1 yum install libreoffice 2 yum install libreoffice-headless 3 yum -y install libreoffice-langpack-zh-Han*
- 安裝完成libreoffice后,我們使用下面的代碼來測試一下是否安裝成功:
soffice --headless --invisible --convert-to pdf 1.docx
(如果是 ppt 轉圖片的話只要把后面的 docx 文件 換成 pptx 文件即可)
- 如果在執行命令的目錄下,生成了一個與word同名的pdf文件,即說明libreioffice安裝成功了
- 對於libreoffice的linux使用可以自行百度
- 在php中,我們可以使用 exec() 函數來調用命令行操作,還有 shell_exec() 等函數(函數用法自行百度)
- 如果在php方法中不能執行 exec() 方法,說明php將這些方法禁用了,這個時候我們可以修改 php.ini 文件中的配置
- 在php.ini 文件中找到 disable_functions = 開頭的一行,然后在后面把自己要使用的函數刪掉,然后重新啟動一下php,然后我們寫的php就可以調用 exec() 等函數了
- 至此,我們就把word轉圖片的所要用到的所有環境都安裝成功了
- php中word轉pdf的方法:
$result = exec("soffice --headless --invisible --convert-to pdf 1.docx"); echo json_encode($result);
可以在同目錄生成word同名pdf文件 - php中pdf轉圖片的方法:
$result = pdf2png("/www/wwwroot/wwj.wangwenjie.club/1.pdf","/www/wwwroot/wwj.wangwenjie.club/"); function pdf2png($pdf, $path) { if (!extension_loaded('imagick')) { return false; } if (!file_exists($pdf)) { return false; } $im = new \Imagick(); $im->setResolution(120, 120); //設置分辨率 值越大分辨率越高 $im->setCompressionQuality(100); $im->readImage($pdf); foreach ($im as $k => $v) { $v->setImageFormat('png'); $fileName = $path . md5($k . time()) . '.png'; if ($v->writeImage($fileName) == true) { $return[] = $fileName; } } return $return; }
可以在同目錄下生成png圖片(pdf幾頁就有幾張圖片生成)
關於pdf轉圖片的方法大家可以參考:
https://blog.csdn.net/jeff_love_marina/article/details/80838055(環境等上面的步驟已經都安裝好了,所以直接看該鏈接的方法就行) - 至此,在 linux 下 php 將 word 轉圖片的方法就整個說完了,加油吧