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

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