linux下php调用unoconv命令将doc、ppt转图片

解决方案:

(1)调用unoconv命令将doc,ppt转pdf

(2)pdf在转图片

步骤

1.安装unoconv

sudo apt-get install unoconv

安装是否成功

unoconv --version

2.安装imagemagick

sudo apt-get install imagemagick

是否安装成功

convert -version

3.测试

(1)将odt文件转成pdf文件

unoconv -f pdf test.docx

(2)将pdf转成图片(jpg)

convert XXX.pdf %d.jpg

%d是按页进行转换

4.php调用shell命令进行转换

<?php
exec("unoconv -f pdf test.docx");
exec("convert  test.pdf %d.jpg");

 补充

1.如果出现错误:

convert: not authorized `test.pdf’ @ error/constitute.c/ReadImage/412.
convert: no images defined `%d.jpg’ @ error/convert.c/ConvertImageCommand/3210.

解决方案:

修改配置文件/etc/ImageMagick-6/policy.xml

  将

<policy domain="coder" rights="none" pattern="PDF" />

改为

<policy domain="coder" rights="read|write" pattern="PDF" />

添加

<policy domain="coder" rights="read|write" pattern="LABEL" />

2.如果转成的图片模糊

转换是增加参数

convert -density 300 -quality 100 test.pdf  %d.jpg

-density XXX

图像每英寸面积内的像素点数,数值越高图片质量越高

-quality 100

转换jpg时的压缩率,100表示不压缩

php代码改为

<?php
exec("unoconv -f pdf test.docx");
exec("convert  -density 300 -quality 100 test.pdf %d.jpg");

继续补充:

关于php执行权限问题:

vi /var/log/auth.log

发现www-data是没有sudo权限的,因此转换失败,但是命令行在ssh里是没问题

添加www-data用户进sudoer里面即可(不知道是否安全。。。)

新建www-data的文件

sudo vi /etc/sudoers.d/www-data

加入内容

www-data ALL=NOPASSWD: /usr/bin/unoconv

在php中使用“sudo unoconv”

 

 

 

 

木易的技术记录 » linux下php调用unoconv命令将doc、ppt转图片

顶 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

置顶文章