关于PPT转图片的问题需要注意的问题
我们有一个项目做过直接上传ppt的功能,但是网页不可能显示ppt,所以只能把ppt转成pdf或者图片来显示,我们的做法是转成了图片,然后使用swiper做成类似轮播图的形式,这样看起来也是一页一页的,跟ppt一样。
ppt转图片过程:ppt->pdf->images,即先使用libreoffice把ppt先成pdf文件,再使用ImageMagick把pdf转成图片。
1、安装LibreOffice
作用:把.ppt或.pptx文件转换成pdf文件
2、安装ImageMagick
作用:把pdf文件转成图片
3、安装gs(全名ghost script)
但安装时,直接用gs就可以,比如macos用brew安装,用:brew install gs 即可(注意安装好后,/usr/local/Cellar中的名称不是gs而是ghostscript),centos用yum -y install gs应该没问题(猜测,未验证)
作用: Ghostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。ImageMagick正是调用gs把pdf转成图片的。
4、mac版的LibreOffice,直接使用官网下载的dmg文件安装
然后在“应用程序”里找到“LibreOffice.app”,右键——查看包内容——找到MacOS目录——找到soffice,该文件正是用来把ppt转成pdf的程序(CentOS应该可能直接使用yum安装,当然你愿意用源码安装也可以)。

它的路径是:/Applications/LibreOffice.app/Contents/MacOS/soffice

php调用具体转换命令为:

 
<?phpswitch(strtolower(PHP_OS)){case 'darwin':$libreoffice = '/Applications/LibreOffice.app/Contents/MacOS/soffice';break;case 'linux':$libreoffice = 'sudo /usr/bin/libreoffice';break;case 'windows':$libreoffice = 'C:\Program Files\LibreOffice 5\program\soffice.exe';break;default:$libreoffice = 'sudo /usr/bin/libreoffice';}$inputDir = WEB_ROOT . '/web' . $pdfupload_dir;$outputFile = WEB_ROOT . '/web' . $node_ppt_file['uri'] . $node_ppt_file['filename'];$cmd = "{$libreoffice} --headless --convert-to pdf --outdir {$inputDir} {$outputFile} 2>&1";exec($cmd);//exec命令的第二、三个参数可以输出具体报错信息(当然这个报错是结合命令末尾的:2>&1)//$res = exec($cmd,$output,$return_var);//print_r($output);//print_r($return_var);//exit;

当LibreOffice的soffice程序被调用后(使用以下格式命令调用):
 /Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir /Users/Bruce/www/tp_center/frontend/web/uploads/casepdf/20171204/ /Users/Bruce/www/tp_center/frontend/web/uploads/caseppt/20171204/50112bdd50d6a36e87b5b91a9ffe6821.pptx  2>&1

对于macos,在dock栏里会出现 LibreOffice的图标,ppt转pdf就开始了,当转换结束后,图标自动会消失。
5、Imagick把pdf转成图片可能报以下错误(我在macos中遇到):
Exception 'ImagickException' with message 'FailedToExecuteCommand 'gs'

解决方法:

I had the same problem on MacOS High Sierra, PHP 7.0 installed from Homebrew. The problem is that FPM $PATH contains (as echoed by <php echo getenv('PATH'); ?>/usr/bin:/bin:/usr/sbin:/sbin, which doesn't include Brew's /usr/local/bin/ install path.

To solve I added

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

to /usr/local/etc/php/7.0/php-fpm.d/www.conf, restarted php70 and worked!

6、对于CentOS,命令前一定要加上sudo,否则肯定会出现权限问题
且需要配置sudo权限,配置方法如下:

PHP脚本调用exec执行权限设置

1.PHP 调用exec执行linux 系统命令时,是以apache 默认user执行,user设置在 httpd.conf文件

User  ×××××

Group ××××

2.如果直接调用exec ('****') 执行root级命令,会报权限不足,这时需要用 sudo exec ('')

3.sudo 执行过程需要输入用户密码,势必对PHP执行带来极大不便,如何取消密码、屏蔽过程信息等,可以在 sudo 配置文件/etc/sudoers里设置

添加sudo用户

## Allow root to run any commands anywhere
       root    ALL=(ALL)       ALL
       apache    ALL=(ALL)        NOPASSWD: ALL

注释掉  Defaults    requiretty  (屏蔽中途信息)

添加PATH:        Defaults    secure_path = /sbin:/bin:/usr/sbin

4.一些可执行脚本需要调用lib,默认不会继承root的LD_LIBRARY_PATH ,报错如下:

error while loading shared libraries: libavformat.so.56: cannot open shared object file: No such file or directory

解决办法:编辑 /etc/lib.so.conf

添加相应lib路径:/usr/ffmpeg/lib/
                 执行sudo  ldconfi

以上是我遇到的坑,看到这篇文章的童鞋,希望你们能跳过这些坑。

From WizNote

转载于:https://www.cnblogs.com/xiedie/p/7978724.html

重要:关于PPT转图片需要注意的问题相关推荐

  1. C# PPT转图片的解决方案

    C# PPT转图片的解决方案 参考文章: (1)C# PPT转图片的解决方案 (2)https://www.cnblogs.com/oriental/articles/5787163.html 备忘一 ...

  2. C#拆分PPT、PPT转视频、PPT转图片

    C#拆分PPT.PPT转视频.PPT转图片 导入dll 1. 拆分PPT 2.PPT转视频 3.PPT转图片 导入dll using Microsoft.Office.Core; using Powe ...

  3. ios开发html转图片,iOS | PPT 转图片(UIImage) 解决方案

    为了实现PPT 转 图片功能, 首先来看下,iOS系统 有哪些API可以实现PPT预览功能; iOS 预览PPT 3种方式: 1. UIWebView / wkwebView 通过 UIWebView ...

  4. linux下ppt转图片的方法

    上篇介绍了windows上将ppt转换为图片的方法,但是在linux平台上确并无法使用,这里再介绍一下自己开发过程中使用的linux上ppt转图片的方法! 同样的,使用POI会有之前存在的清晰度以及内 ...

  5. jacob实现ppt转图片时存在的问题

    1.原因 对于ppt转图片,尝试过很多种方法,最后确认使用jacob,虽然需要有windows系统和wps(或者office)这样的限制,但排版和图片质量相对来说就非常好了. 2.问题 (1)使用ja ...

  6. Java 批量导出PPT为图片,并合并生成PDF

    Java 批量导出PPT为图片,并合并生成PDF 最近有小伙伴需要把PPT打印,但苦于PPT太多,浪费纸张,所以特别写了这个合并多张PPT到一张A4纸上并生成PDF方便打印的程序: 前期准备 把PPT ...

  7. java中使用poi导出ppt(图片和表格)

    java使用POI导出PPT(超简单方法,包含图片和表格) 在做项目中遇到一个需求,将职员的信息导出成一个形式固定的ppt文档,poi有许多方法可以实现,因为我是一名Java小白,于是便想用最简单的方 ...

  8. java 使用poi将PPT转为图片,在线预览PPT

    在线预览PPT,我的思路为java 使用poi将PPT转为图片,图片存储到指定的文件夹下面,然后返回生成的图片名称集合,将图片路径遍历到前台的html标签上,用HTML前台模仿画一个PPT框架,操作图 ...

  9. ppt转换图片及有密码情况处理

    ppt转换图片方法 ,采用Jacob调用本地COM组件转换,其中作为服务器供用户上传时,如果用户传ppt是有密码的则会使ppt一直停留在输入密码状态,导致其它用户无法使用,这时可以简单做个超时判断,关 ...

  10. 使用Aspose组件将WORD、PDF、PPT转为图片

    using System; using System.Collections.Generic; using System.Text; using OMCS.Engine.WhiteBoard; usi ...

最新文章

  1. Conda 为什么越来越慢?
  2. android mmkv使用_MMKV解读
  3. wxWidgets:wxIdleEvent类用法
  4. 牛客网(剑指offer) 第二十二题 从上往下打印二叉树
  5. 异常-throws的方式处理异常
  6. Python_自定义关键字的使用
  7. SAP License:SAP系统中的删除命令
  8. 第2章[2.1] 开发模式及快速测试方式
  9. pytorch/tensorflow 查看 cuda 是否可用
  10. “干掉”程序员饭碗后,OpenAI 又对艺术家下手了!
  11. python实现拼多多自动回复_拼多多客服多开工具怎么配置多店铺客服?
  12. gitHub报错10054、443解决办法
  13. Spring获取外网IP
  14. 360 面试 一面+二面
  15. oppoa9处理器怎么样_oppoa91参数处理器怎么样
  16. matlab错位相减,matlab随手记
  17. 动态设置根节点字体大小
  18. GAMES101-现代计算机图形学入门-闫令琪 - lecture15 光线追踪3 - 辐射度量学、渲染方程(Ray Tracing 3) - 课后笔记
  19. 无线降噪蓝牙耳机对比:NANK南卡和苹果AirPods Pro哪个好用?
  20. 安装数据库中一直报错重启计算机,MySQL安装失败问题汇总

热门文章

  1. 记录-关于网站的欢迎页,初次进入可见欢迎页,再次进入就直接显示主页了
  2. lambda表达式——Stream管道流的map操作
  3. nagios配置示例
  4. 4.1-4.3 什么是矩阵 矩阵的基本运算及性质
  5. JAVA int类型 获取高低位
  6. vnpy量化回测怎么做?一文带你了解
  7. i5 vs i7区别是什么,那个处理器适合您的电脑?
  8. 线性代数 05.07 用合同变换法化二次型为标准形
  9. 【JavaSE】图书馆系统制作--JavaSE简易知识整合
  10. python真实收入曝光_程序员工资很高吗?资深HR透露真实收入,网友:说的很现实...