PHP将word文件转为图片之二

56 篇文章 0 订阅

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

一、安装宝塔

这一步就略过了

二、安装php相关扩展

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

三、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转图片

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博客

$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);

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

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

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

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

Unoconv failed to execute command

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

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

#php think auto1 

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值