pdf文件轉多張圖片?imagick擴展的安裝?執行轉換代碼時報678的錯誤?解決方案都在這兒啦

今天晚上終於有時間來整理一下pdf轉圖片的記錄了。因爲公司項目中要做一個這樣的項目--電子雜誌,要用到pdf轉圖片的功能。所以我就研究一下。

主要來講,這個功能用一個composer包就能完成,但是在開發的過程中,踩了許多坑,所以爲了大家不要在採坑了或者少踩一點坑,我把我實現成功的過程記錄下來,供大家參考一下。

主要有3點:

1.環境和擴展的安裝

1.1安裝imagick擴展

1.2linux系統安裝ImageMagick-devel運行程序

1.3linux系統安裝ghostscript(後面會講到)解決報678錯誤的關鍵點哦

2.加載spatie/pdf-to-image依賴(composer)

3.代碼

 

1.安裝PHP的imagick擴展。

wget http://pecl.php.net/get/imagick-3.4.3.tgz

tar -xvf imagick-3.4.3.tgz

cd imagick-3.4.3/

/usr/local/php/bin/phpize

./configure  --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick

這一步會出現了下面配置文件不存在。就是因爲沒有安裝上面2.1中的那個軟件的,所以執行下面的操作。

yum install ImageMagick-devel

./configure  --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick

見到如上圖所示以後就說明imagick擴展加載成功了。然後打開php.ini文件,加上如下的命令:

和上面圖片的文件擴展路徑對應,然後重啓服務器。

2.安裝擴展包

因爲我用的是tp5,所以使用了composer

composer require spatie/pdf-to-image。

如果你沒有安裝擴展的話就composer不成功。

3. 代碼

class Index extends Controller {

    /**
     * pdf裝成png圖片
     */
    public function pdftopng(){
        //實例化對象之前加反斜槓,注意pdf文件的路徑
        $pdf = new \Spatie\PdfToImage\Pdf('../public/datas/jianli.pdf');
        foreach (range(1, $pdf->getNumberOfPages()) as $pageNumber) {
            $pdf->setPage($pageNumber)
                ->saveImage('../public/datas/png/page'.$pageNumber.'.jpg');
        }

    }
}

然後執行完成以後查看生成的圖片文件

執行過程中如果一直報:error/pdf.c/ReadPDFImage/678 這樣的錯誤,就給linux安裝ghostscript

yum -y install ghostscript

大致的過程就是這個樣子,有什麼有疑問的歡迎聯繫我。vx:fvalyl

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章