• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PHPword文件转为图片预览

武飞扬头像
hotlinhao
帮助3

开发中遇到一个需求,需要在线预览word文件,在网上找到的解决方案有几种,在些做一下归类。

一、在线调用API接口直接预览

        1.  微软的接口

                https://view.officeapps.live.com/op/embed.aspx?src=你的文档地址

                可以是word,excel等office文档,直接用iframe显示即可。适用于可公开的文件。

        2. I DOC view

                和微软的接口性质是一样的,具体可参照示例:

示例 - I Doc View在线文档预览

二、PhpOffice将word转换为html然后预览

        GitHub - PHPOffice/PHPWord: A pure PHP library for reading and writing word processing documents

         以上为phpWord的Github地址,使用composer安装,然后就可以转换,不过目前遇到的问题是:

        1. 不能分页: 转换后的代码是一整串,没有进行分页。不便预览。这一点非常不好。

         2. 图片的处理:通过网上查询可以将图片上传,然后使用IMG标签显示出来。

三、将word转为pdf,然后将pdf转换为图片预览

        通过目前查询的资料,word不能直接转换为图片,需要先将图片转换为pdf。然后将pdf转换为PNG图片。

        1. 安装 imagemagick扩展(宝塔环境在扩展中直接安装即可)

        2. 安装libreoffice扩展

          

  1.  
    yum install libreoffice
  2.  
     
  3.  
    yum install libreoffice-headless
  4.  
     
  5.  
    yum -y install libreoffice-langpack-zh-Han*

安装完成libreoffice后,使用下面的代码来测试登上安装是否成功:

soffice --headless --invisible --convert-to pdf 1.docx

正常情况下,会在同目录下生成一个同名的PDF文件。

更多的使用方法可自行网上查询。

要在php中执行上面的代码,需要用到php的exec命令,这时候就需要解锁exec函数,宝塔在禁用函数中找到这个删除即可。其它的在php.ini中找到disable_functions里有一个exec函数去掉。

        3.在php中word转pdf的方法 。

  1.  
    $result = exec("soffice --headless --invisible --convert-to pdf 1.docx");
  2.  
     
  3.  
    echo json_encode($result);

       soffice --headless --convert-to 目标格式(如pdf) 转格式文件 --outdir 目标文件夹

        4. 将pdf转换为图片

  1.  
    public function pdf(){
  2.  
    $res = $this->pdf2png('./uploads/006.pdf','./uploads/pdf/');
  3.  
    dump($res);
  4.  
    }
  5.  
     
  6.  
     
  7.  
    private function pdf2png($pdf, $path)
  8.  
    {
  9.  
    if (!extension_loaded('imagick')) {
  10.  
    return false;
  11.  
    }
  12.  
    if (!file_exists($pdf)) {
  13.  
    return false;
  14.  
    }
  15.  
    $im = new \Imagick();
  16.  
    $im->setResolution(120, 120); //设置分辨率 值越大分辨率越高
  17.  
    $im->setCompressionQuality(100);
  18.  
    $im->readImage($pdf);
  19.  
    foreach ($im as $k => $v) {
  20.  
    $v->setImageFormat('png');
  21.  
    $fileName = $path . md5($k . time()) . '.png';
  22.  
    if ($v->writeImage($fileName) == true) {
  23.  
    $return[] = $fileName;
  24.  
    }
  25.  
    }
  26.  
    return $return;
  27.  
    }
学新通

在执行的时候会发现,有一个错误提示类似下面的:

centos FailedToExecuteCommand `'gs'

这个是因为没有安装ghostscript导致的,需要在服务器上安装ghostScript.

ghostScript下载地址:

Ghostscript : Downloads

学新通

点击下面的源码下载然,然后上传至自己的服务器上。

安装很简单如下执行即可:

  1.  
    # tar -xzvf ghostscript-9.27.tar.gz
  2.  
    # cd ghostscript-9.27
  3.  
    # ./configure
  4.  
    # make
  5.  
    # make install

 安装完成以后执行下面的命令,查看是否安装正常:

# gs --version

学新通

 至此就将word转换成了png图片。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiafbh
系列文章
更多 icon
同类精品
更多 icon
继续加载