当前位置:   article > 正文

PHP将word文件转为图片之二_unoconv 能将word的所有页面都转为图片吗

unoconv 能将word的所有页面都转为图片吗

0804记录安装php将Word转为pdf过程

一、安装宝塔

这一步就略过了

二、安装php相关扩展

  1. Fileinfo
  2. Redis
  3. Mcrypt
  4. Imagemagick
  5. Exif

三、Linux安装需要的软件

  1. yum install libreoffice
  2. yum install libreoffice-headless
  3. 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代码

  1. $unoconv = Unoconv::create(array(
  2.     'timeout'          => 42,
  3.     'unoconv.binaries' => '/www/wwwroot/xxwm2.cn/unoconv/unoconv',
  4. ));
  5. $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一般是解不了的。

然后在服务器上执行下面的命令:

  1. unzip Fonts.zip
  2. mkdir /usr/share/fonts/win
  3. cp Fonts/* /usr/share/fonts/win
  4. cd /usr/share/fonts/win
  5. chmod  -Rf 755 *
  6. mkfontscale  
  7. mkfontdir  
  8. fc-cache –fv  

然后重启服务器即可

七、PDF转图片

FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r120x120' -dPrinted=false '-sOutputFile=/tmp/magick-GBf6dYRq4J5sLZcQAoOOWPwJA7nL0WDC%d' '-f/tmp/magick-BuJErt6i8ablV1wDlNB9JOONunxaJFKO' '-f/tmp/magick-4V1vEE3aX3j8_RCiGFXkTpfnqPDzy0T0'' (32512) @ error/ghostscript-private.h/ExecuteGhostscriptCommand/74

这里一般会遇到这样的问题。

参考上一篇,最后一部分

PHP将word文件转为图片预览_hotlinhao的博客-CSDN博客

  1. $pdf = './uploads/002-1.pdf';
  2. if (!extension_loaded('imagick')) {
  3.     exit('1');
  4. }
  5. if (!file_exists($pdf)) {
  6.     exit('2');
  7. }
  8. $path = './uploads/pdfimg/';
  9. $im = new \Imagick();
  10. $im->setResolution(120, 120); //设置分辨率 值越大分辨率越高
  11. $im->setCompressionQuality(100);
  12. $im->readImage($pdf);
  13. foreach ($im as $k => $v) {
  14.     $v->setImageFormat('png');
  15.     $fileName = $path . md5($k . time()) . '.png';
  16.     if ($v->writeImage($fileName) == true) {
  17.         $return[] = $fileName;
  18.     }
  19. }
  20. print_r($return);

注意将代码中的路径换成自己的即可。

至此就可以将word转换为图片。

本人在虚拟机上新建一个新的虚拟机测试了一遍完整的流程。可以正常使用。

如果你在生产服务器上遇到下面的错误:

Unoconv failed to execute command

而在虚拟机上可以运行,可以试试在linux命令行执行你的php代码,有时候是可以运行的,那就是unoconv权限的问题。

我在虚拟机上跑起来完全是没有问题的,但是在生产服务器上怎么就跑不了。用

#php think auto1 

执行以后可以正常运行。判断为权限问题。(折腾三个多小时)

附上两个对有些人来说比较不好下载的资源:

php版unoconv-master用于将word转为pdf-PHP文档类资源-CSDN下载

ghostscript9.56-PHP文档类资源-CSDN下载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/841739
推荐阅读
相关标签
  

闽ICP备14008679号