赞
踩
0804记录安装php将Word转为pdf过程
一、安装宝塔
这一步就略过了
二、安装php相关扩展
三、Linux安装需要的软件
- yum install libreoffice
-
- yum install libreoffice-headless
-
- yum -y install libreoffice-langpack-zh-Han*
依次安装上面几个软件,然后测试是否安装成功:
soffice --headless --invisible --convert-to pdf 1.docx
如果成功的话,会在同目录下创建一个同名的pdf文件。
四、安装PHP版的unoconv
下载地址:
GitHub - alchemy-fr/PHP-Unoconv
将下载的文件解压上传至网站目录,如果放到网站目录之外的,要注意将防跨站的.user.ini里的配置目录修改。
五、写PHP代码
- $unoconv = Unoconv::create(array(
- 'timeout' => 42,
- 'unoconv.binaries' => '/www/wwwroot/xxwm2.cn/unoconv/unoconv',
- ));
- $unoconv->transcode('./uploads/002.doc','pdf','./uploads/002-1.pdf');
Unoconv.binaries为你的unoconv的路径,注意这里需要有可执行权限,否则无法运行。
需要PHP函数 proc_open
如果你转过的PDF发现字体不对或乱码,有变形说明你的服务器上没有相应的字体。
六、处理字体问题
将win10电脑上的字体上传至服务器,打包 c:\windows\Fonts 为Fonts.zip 一定要是zip格式哦,rar在linux一般是解不了的。
然后在服务器上执行下面的命令:
- unzip Fonts.zip
-
- mkdir /usr/share/fonts/win
-
- cp Fonts/* /usr/share/fonts/win
-
- cd /usr/share/fonts/win
-
- chmod -Rf 755 *
-
- mkfontscale
-
- mkfontdir
-
- fc-cache –fv
然后重启服务器即可
七、PDF转图片
这里一般会遇到这样的问题。
参考上一篇,最后一部分
PHP将word文件转为图片预览_hotlinhao的博客-CSDN博客
- $pdf = './uploads/002-1.pdf';
- if (!extension_loaded('imagick')) {
- exit('1');
- }
- if (!file_exists($pdf)) {
- exit('2');
- }
-
- $path = './uploads/pdfimg/';
- $im = new \Imagick();
- $im->setResolution(120, 120); //设置分辨率 值越大分辨率越高
- $im->setCompressionQuality(100);
- $im->readImage($pdf);
- foreach ($im as $k => $v) {
- $v->setImageFormat('png');
- $fileName = $path . md5($k . time()) . '.png';
- if ($v->writeImage($fileName) == true) {
- $return[] = $fileName;
- }
- }
- print_r($return);
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
注意将代码中的路径换成自己的即可。
至此就可以将word转换为图片。
本人在虚拟机上新建一个新的虚拟机测试了一遍完整的流程。可以正常使用。
如果你在生产服务器上遇到下面的错误:
Unoconv failed to execute command
而在虚拟机上可以运行,可以试试在linux命令行执行你的php代码,有时候是可以运行的,那就是unoconv权限的问题。
我在虚拟机上跑起来完全是没有问题的,但是在生产服务器上怎么就跑不了。用
#php think auto1
执行以后可以正常运行。判断为权限问题。(折腾三个多小时)
附上两个对有些人来说比较不好下载的资源:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。