linux环境操作PPT转图片总结

   做项目碰到这么个需求,前后找了不少相关的解决方案,终于完成,分享给大家,如有错误疏漏还望多多指正讨论

该文档部分参数参考来源于 https://www.codenong.com/6605006/

1.首先在linux环境下安装 unoconv (用于文件格式的转换)
执行命令: yum install -y unoconv
2.第一步安装成功后再安装ImageMagick (用来处理图片)
执行命令(注意大小写): yum install -y ImageMagick
3.先进行ppt的文件格式转换
执行命令: unoconv -f pdf xxx.pptx
pdf是要输出文件的名称和格式,这一步操作会在当前文件夹下生成一个同名的pdf文件,用于后续的图片处理
4.处理pdf文件将其转为图片文件列表
执行命令: convert xxx.pdf %d.jpg
xxx.pdf要转换的文件,%d页码变量,将pdf按页转成图片文件,有多少页就会有多少个对应页码数的图片文件,不带参数的情况下,这一步转出的图片清晰度不够,需要附加一些参数来提高清晰度,详细可参考文档开头的网址;
这里简单描述较常用的2个参数:
-density 参数有点特殊,因为必须位于输入文件之前。由于PDF是基于矢量的文件格式,没有像素的概念,因此它表示"页面为8英寸乘12英寸"。如果需要像素,可以使用density设置告诉它要在输出中获得的每英寸像素数。例如使用150,您将在结果图像中得到8x150 = 1200 x 12x150 = 1800像素。那也就是进行锐化,对比度,压缩等设置的像素数量
-density 300设置pdf渲染的dpi

-quality 图片质量
-quality 100将JPEG压缩质量设置为最高质量

综合执行命令: convert -density 300 -quality 100 xxx.pdf %d.jpg
如执行上述命令,会执行较长时间,但图片质量也有较大提升,同时图片的大小也会增加不少
5.实际应用于项目中还需将该执行命令封装一下,使用exec函数(php语言)执行
@exec(‘unoconv -f pdf xxx.pptx ’)
@exec(‘convert -density 300 -quality 100 xxx.pdf %d.jpg ’)
说明: @用户忽略报错信息,可不加该字符
6.以上方法执行可能会存在执行无效果,可以排查禁用函数,和php.ini配置问题,如还不能解决问题可采用下述方法:
exec(“PATH=/sbin:/bin:/usr/sbin:/usr/bin unoconv --format=pdf --output=”.o u t p u t l j . " " . output_lj." ".outputlj."".file_name);

o u t p u t l j 是完整的文件导出路径及文件名 , output_lj是完整的文件导出路径及文件名,outputlj是完整的文件导出路径及文件名,file_name是要操作文件的完整路径及文件名
convert 方法同理;这里执行不成功很有可能是php没有响应的执行权限
7.至此关于PPT转图片的基本操作流程及方法总结完毕,如有不完善,不细致的地方,还望多多指正


版权声明:本文为t598755573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。