刚开始的时候是客户的活儿,真的是没有想到,被这样一个方法给卡住了,真是醉了,经过漫长的一周,终于搞定了这个问题,以下就来给大家介绍以下这个方法把。能方便大家。

【注】本方法也可以将 ppt 转为图片(execl 没试过,有时间你们可以试一下)

(直接转换没办法,所以找了个折中的办法,先转成pdf文件,然后再将pdf转图片)

先说一下环境的安装(我也是经历了好几次失败才总结出环境的安装的,*表示必须的操作,如果是大神,那么请绕道)

  1. 服务器环境:centos7
  2. *集成环境:宝塔
  3. 安装完宝塔后,选择安装LNMP的集成环境(php的版本最好安装5.6及以上)
  4. 这里需要注意的就是必须使用 nginx 的环境(别用apache,坑太多),还有就是使用宝塔的集成环境,别问我为什么,因为坑太多,只要时间充足,工作不限时长,你也可以自己尝试的安装各种环境试试(为了快速,就按照我的环境安装步骤走)
  5. 等待。。。
  6. 环境安装完成之后,我们进入宝塔的软件商店,点击php后面的设置,然后给php安装imagemagick扩展
  7. 等待这个php扩展的安装完成

  8. 安装完成之后,我们开始给服务器安装libreoffice

  9. 直接执行下面的代码就可以(第一个安装好就ok了,后面两个安装的时候可能会报错,但是只要第一个安装好了,其实没什么大的影响)
     yum install libreoffice
    yum install libreoffice-headless
    yum -y install  libreoffice-langpack-zh-Han*
  10. 安装完成libreoffice后,我们使用下面的代码来测试一下是否安装成功:
    soffice --headless --invisible --convert-to pdf 1.docx

    (如果是 ppt 转图片的话只要把后面的 docx 文件 换成 pptx 文件即可)

  11. 如果在执行命令的目录下,生成了一个与word同名的pdf文件,即说明libreioffice安装成功了
  12. 对于libreoffice的linux使用可以自行百度
  13. 在php中,我们可以使用 exec() 函数来调用命令行操作,还有 shell_exec() 等函数(函数用法自行百度)
  14. 如果在php方法中不能执行 exec() 方法,说明php将这些方法禁用了,这个时候我们可以修改 php.ini 文件中的配置
  15. 在php.ini 文件中找到 disable_functions = 开头的一行,然后在后面把自己要使用的函数删掉,然后重新启动一下php,然后我们写的php就可以调用 exec() 等函数了
  16. 至此,我们就把word转图片的所要用到的所有环境都安装成功了
  17. php中word转pdf的方法:
    $result = exec("soffice --headless --invisible --convert-to pdf 1.docx");
    echo json_encode($result);

    可以在同目录生成word同名pdf文件

  18. php中pdf转图片的方法:
    $result = pdf2png("/www/wwwroot/wwj.wangwenjie.club/1.pdf","/www/wwwroot/wwj.wangwenjie.club/");
    
    function pdf2png($pdf, $path)
    {
    if (!extension_loaded('imagick')) {
    return false;
    }
    if (!file_exists($pdf)) {
    return false;
    }
    $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;
    }
    }
    return $return;
    }

    可以在同目录下生成png图片(pdf几页就有几张图片生成)
    关于pdf转图片的方法大家可以参考:
    https://blog.csdn.net/jeff_love_marina/article/details/80838055(环境等上面的步骤已经都安装好了,所以直接看该链接的方法就行)

  19. 至此,在 linux 下 php 将 word 转图片的方法就整个说完了,加油吧

linux,centos,php,word转图片方法的更多相关文章

  1. linux centos apache开启gzip的方法

    开启gzip压缩的方法很简单,连接服务器并打开配置文件“httpd.conf”,找到下面这两句,去掉前面的“#”  代码如下 1 LoadModule deflate_module modules/m ...

  2. Linux - CentOS 登陆密码找回解决方法

  3. [Linux] - CentOS IP设置方法

    CentOS 7的IP设置方法: 1.手动设置IP方法 a) 运行命令,cd到目录: cd /etc/sysconfig/network-scripts/ b) 运行命令:ls -l 找到类似这个文件 ...

  4. linux centos安装编译phantomjs 2.0的方法

    phantomjs 2.0最新版的官方不提供编译好的文件下载,只能自己编译,有教程但是过于简单,特别是服务器上要安装N多的支持.折腾到现在终于装好了并且能正常运行了,截图mark一下: linux c ...

  5. Linux/Centos下清理内存和Cache方法

    Linux/Centos下释放内存和缓存方法 $ free -m 运行sync将dirty的内容写回硬盘$ sync 通过修改proc系统的drop_caches清理free的cache$ echo ...

  6. 解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法

    Linux下默认cp命令是有别名的(alias cp='cp -i'),无法在复制时强制覆盖,即使你用 -f 参数也无法强制覆盖文件,下面提供几个从网上找的Linux下cp命令覆盖的方法. 1)取消c ...

  7. 001. 使用ssh连接不上centos 6.5的解决方法及其解决中文乱码

    1. 使用ssh连接不上centos 6.5的解决方法: 错误显示: Connecting to 192.168.1.106:22... Could not connect to '192.168.1 ...

  8. CentOS系统版本的查看方法

    CentOS系统版本的查看方法 查看操作系统版本 1 [root@aliyun ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noa ...

  9. Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】

    简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...

随机推荐

  1. ZeroC ICE的远程调用框架 Slice如何帮助我们进行Ice异步编程(AMI,AMD)

    Slice最大的用处就是为我们使用Ice进行编程,代劳绝大部分的重复性代码,并提供一些帮助性的框架代码,如用于AMI和AMD方式进行异步编程的回调框架. 当Slice不为我们生成代码时,我们仍然可以按 ...

  2. AsyncDisplayKit编译和使用注意事项

    Facebook开源框架,在github上可下载到.首先要编译AsyncDisplayKit库项目,有可能会出现下面错误: cocoaPods是基于ruby的项目版本控制软件,如果是ruby新手就会不 ...

  3. 微信小程序-rpx

    rpx 是微信小程序解决自适应屏幕尺寸的尺寸单位.微信小程序规定屏幕的宽度为750rpx. 微信小程序同时也支持rem尺寸单位, rem 规定屏幕的宽度为20rem, 所以 1rem = (750/2 ...

  4. 作业要求20191031-7 beta week 1/2 Scrum立会报告+燃尽图 05

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9915 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩 ...

  5. mysql通俗易懂的数据库连接池原理及模拟实现

    什么是数据库连接池? 当系统使用JDBC技术访问数据库时会创建一个connection对象,而该对象的创建过程是非常消耗资源的,并且创建对象的时间也特别长,假设系统一天有1万次的访问量,那么一天就会有 ...

  6. 每天复现一个漏洞--vulhub

    phpmyadmin scripts/setup.php 反序列化漏洞(WooYun-2016-199433) 漏洞原理:http://www.polaris-lab.com/index.php/ar ...

  7. Redis高可用演进(一)

    原文链接:http://www.cnblogs.com/chenty/p/5152878.html 最近整理Redis,对sentinel有了更深入的理解,特地总结如下 1.主从Redis 主从red ...

  8. day 25 方法和函数 反射

    特殊成员的补充: # __str__ class Foo(object): def __init__(self): pass def func(self): pass def __str__(self ...

  9. Dubbo实现登陆

    一.目录展示 二.dubbo_logins_service 2.1 实体类和service层 2.2 logins实体类 package com.login.entity; import java.i ...

  10. Xamarin.Forms 学习系列之优秀UI收集

    1.各种优秀UI例子 https://github.com/jsuarezruiz/xamarin-forms-goodlooking-UI 输入框例子 https://github.com/enis ...