php实现pdf,word,excel,ppt转图片需要采用几个插件实现。
一、imagemagick插件
imagemagick插件是图片处理插件,当下工作中图片处理使用率越来越高,在图像处理库中,php imagick扩展是一款非常实用的工具,它可以对图片进行格式转换、调整大小、添加水印等多种操作。但是,由于其安装过程相对较为复杂,很多开发者对该扩展的使用还存在一些困惑。
linux系统下命令安装方式
sudo apt-get install imagemagick
当然如果服务器安装有宝塔面板的话,可以在php管理中直接点击安装,如下图:
imagemagick插件能把pdf转成jpg或png图片,php实现代码如下:
// PDF 文件路径 $pdf = 'exp.pdf'; $path = 'pdf/';//生成图片目录 $im = new Imagick(); $im->setResolution(300, 300); //设置分辨率 值越大分辨率越高 $im->setCompressionQuality(100); $im->readImage($pdf); foreach ($im as $k => $v) { $v->setImageFormat('jpg'); $fileName = $path . md5($k . time()) . '.jpg'; if ($v->writeImage($fileName) == true) { echo $fileName; } }
二、unoconv插件
随着科技的不断进步,文档的处理已经成为了一项必不可少的工作,而众所周知,最常用的文档格式无疑是Microsoft Office的.doc和.docx格式,而在服务器端,我们无法通过Office软件直接进行文档的转换和处理,这时候就需要借助于Unoconv工具来解决这个问题。本文将对Unoconv进行详细讲解,并给出一些实用的应用案例供大家参考。
Unoconv是一个基于OpenOffice核心结构的文档转换工具,通过Unoconv我们可以在服务器端进行大部分的Office文档文件转换操作,比如将.doc转换成.docx格式,或是将.pdf转换成.doc格式等。现在,让我们来看看具体怎么使用Unoconv来实现文档转换的过程。
首先,我们需要在服务器端安装Unoconv。如果你的服务器是Debian/Ubuntu系统,可以通过以下命令进行Unoconv安装:
sudo apt-get install unoconv
如果你的服务器是Red Hat/CentOS系统,则需要使用以下命令进行安装:
sudo yum install unoconv libreoffice-headless
测试是否成功命令
convert -version
通过unoconv可以把大部分的Office文档文件转成pdf,代码如下:
$origin_file = 'test.doc'; //原始文档文件名称 $target_file = 'test.pdf'; //转换后文档文件名称 $command = 'unoconv -f pdf ' . $origin_file; //Unoconv命令 exec($command); //执行Unoconv命令 rename('test.pdf', $target_file); //重命名
执行以上还需把exec在禁用函数中取消,有的资料还建议把php.ini的safe_mode设置成On模式,我的是php 5.6版本是不需要这步。
但是在php执行后发觉并没有生成pdf文档,而在shell命令下能够正常生成。
把命令代码加上参数,查看报错:
$command = 'unoconv -f pdf ' . $origin_file .' 2>&1'; //Unoconv命令 exec($command,$res, $rc); print_r($res);
这样运行后提示如下:
Traceback (most recent call last): File "/usr/bin/unoconv", line 1205, in <module> run() File "/usr/bin/unoconv", line 1115, in run office_environ(of) File "/usr/bin/unoconv", line 202, in office_environ os.environ['PATH'] = realpath(office.basepath, 'program') + os.pathsep + os.environ['PATH'] File "/usr/lib64/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: 'PATH'
各类加权限,各类操作,均无果,正当想放弃的时候,看到KeyError:'PATH',是不是在WEB运行环境导至路径问题呢,马上改代码:
$origin_file = 'word.docx'; //原始文档文件名称 $target_file = 'word.pdf'; //转换后文档文件名称 $command = 'PATH=/sbin:/bin:/usr/sbin:/usr/bin unoconv -f pdf ' . $origin_file ." 2>&1"; //Unoconv命令 exec($command,$res, $rc); //执行Unoconv命令
最终看到了生成的word.pdf文件
下载文件打开一看,又出问题了,文档是乱码的,如下图:
word.docx内容是:
word.pdf内容是:
继续解决问题。