php使用imagemagick和libreoffice实现pptx转pdf,每页转存为图片

1.安装libreoffice

yum install libreoffice


pptx转pdf  不加out-dir参数的话 会默认为原文件名.pdf

soffice --headless --convert-to pdf:impress_pdf_Export 123.pptx



2.安装imagick

yum install ImageMagick
yum install ImageMagick-devel
yum install ghostscript

3.安装php-imggick 

wget 
tar -zxvf imagick-3.4.3.tgz 
cd imagick-3.4.3
phpize 
./configure  //多版本的需要配置不同的php-config
make && make install

然后加到php.ini中


一个php源

wget http://www.atomicorp.com/installers/atomic 
sh ./atomic
yum check-update


4.php代码 图片大的话  就调一下压缩比,数越大图片越大,获取pdf页码的方法有点慢

 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 = 'jpg';//目标文件扩展名
 
    try{
        $imagick = new \Imagick();

        $imagick->pingImage($pdf);
		$nums = $imagick->getNumberImages();
		echo $nums;

        $imagick->setResolution(220,220); //设置图像分辨率
        $imagick->setCompressionQuality(50); //压缩比
        for ($i=0; $i < $nums; $i++) { 
        	$imagick->readImage($pdf."[".$i."]");
	        $imagick->setImageFormat( $extension );
	        if($imagick->writeImage($img.'_'.$i.'.jpg') == true) {
	            echo '转换成功';
	        } else {
	            echo '转换失败';
	        }
        }
        
    }catch(\Exception $e){
        return ['status'=>-1,'msg'=>'转换出错'];
    }
}


echo pdf2img('/home/123.pdf','/home/123');



5.getNumberImages  如果文件页码太多,会很慢

所以换一种

yum install xpdf

php

$nums = exec('pdfinfo '.$pdf.'|grep Pages|sed s/[[:space:]]//g');
$nums = str_replace('Pages:', '', $nums);
echo $nums;


打赏

看恩吧
网站不承担任何有关评论的责任
  • 最新评论
  • 总共条评论
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦