今天晚上终于有时间来整理一下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