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