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;
本文为看恩吧原创文章,转载无需和我联系,但请注明来自knsay.com