主要使用PHP imagick扩展,以及ImageMagick软件进行转换
一、安装ImageMagick
Centos下可以直接使用
yum install ImageMagick
然后再安装ImageMagick-devel,否则php安装扩展时会报错
configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
yum install ImageMagick-devel
二、安装PHP扩展
扩展包下载地址:https://pecl.php.net/package/imagick
wget https://pecl.php.net/get/imagick-3.4.3.tgz tar -zxvf imagick-3.4.3.tgz cd imagick-3.4.3 phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
然后,在php.ini中添加 extension=imagick.so
如果还是用不了, 在centos 中可以这样
yum install ghostscript
这是一个文件提取器 , 特别是对文件的操作
三,DEMO
/**
* pdf 转换为 img(单独一页)
* @param string $pdf pdf文件路径
* @param string $img 转化的目标文件
* @param integer $page 要转化的文件的页码
* @return array
*/
public static function pdf2img($pdf, $img, $page=1)
{
if(!extension_loaded('imagick')){
return ['status'=>-1,'msg'=>'扩展不存在'];
}
if(!file_exists($pdf)){
return ['status'=>-1,'msg'=>'PDF文件不存在'];
}
if($page <= 0){
return ['status'=>-1,'msg'=>'页码不能小于等于0'];
}
$extension = pathinfo($img)['extension'];//目标文件扩展名
try{
$imagick = new \Imagick();
$imagick->setResolution(220,220); //设置图像分辨率
$imagick->setCompressionQuality(100); //压缩比
$imagick->readImage($pdf."[".($page-1)."]");
$imagick->setImageFormat( $extension );
if($imagick->writeImage($img) == true) {
return ['status'=>1,'msg'=>'转换成功'];
} else {
return ['status'=>-1,'msg'=>'转换失败'];
}
}catch(\Exception $e){
return ['status'=>-1,'msg'=>'转换出错'];
}
}