实现PPT在线预览,PPT转图片方案
一、PPT转图片可行方案探索历程
PPT转图片方案 |
方案具体步骤及分析 |
已放弃方案 |
poi(失真度太高);Aspose直接转图片(收费,效果较好,备选);微软Office Online(需要基于Windows部署);office web 365(收费,效果可以,公有云服务);永中DCS(收费,效果不是很好);docsplit(命令行或者Ruby接口调用,底层使用LibreOffice将文档转换成PDF,GraphicsMagick 生成图片。) |
使用过的方案及情况 |
PPT转PDF文件使用LibreOffice(需要安装,支持linux平台,转换效果良好,少数会出现颜色和格式不一致,需要进一步寻找更佳方案),PDF文件转图片使用GraphicsMagick(需要安装,支持Linux平台,转换效果良好,有少数文字清晰度会降低,考虑到使用JAVA做开发,需要结合使用im4java) |
可尝试方案 |
Linux下unoconv(命令行工具,底层也是用的LibreOffice)将ppt转成pdf,用imagemagick将pdf转成jpg(文档比较少,但是可以尝试下) |
最终采用方案 |
使用LibreOffice将PPT转成PDF(代码参考开源项目kkFileView),再使用pdftocairo将PDF文件转成SVG文件(获取每页PDF文件时要用到了PDFbox) |
二、相关软件安装步骤
说明:安装均在CentOS下进行,除了poppler不支持Window平台外,其他的工具都可以找到Windows平台上的安装包。
一、安装libreoffice:
yum install libreoffice(版本为5.3.6.)
或者:
下载 https://www.libreoffice.org/donate/dl/rpm-x86_64/6.0.5/zh-CN/LibreOffice_6.0.5_Linux_x86-64_rpm.tar.gz
tar -xzvf LibreOffice_6..5_Linux_x86-64_rpm.tar.gz
$ cd LibreOffice_6.0.5.2_Linux_x86-64_rpm/RPMS/
$ sudo yum install *.rpm
命令行启动服务错误解决:
./soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
error while loading shared libraries: libcairo.so.: cannot open shared object file: No such file or directory
原因:缺少libcairo.so.2依赖库
解决:yum install ibus(启动失败的时候加)
之后再通过代码启动服务时,如果这个服务没有关闭会报错,所以启动成功后需要手动关闭(kill - 进程号)
命令行使用,pptx转pdf:
cd /opt/libreoffice6./program
soffice --convert-to pdf:writer_pdf_Export test.pptx
卸载libreoffice
yum erase libreoffice\*
或者yum remove libreoffice-*
LibreOffice乱码问题解决:
cd /usr/share/fonts/ 加上Windows字体包
执行以下命令让字体生效
cd /usr/share/fonts
mkfontscale
mkfontdir
fc-cache -fv
二、安装GraphicsMagick:
yum -y install wget
wget ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/GraphicsMagick-LATEST.tar.gz
tar -xzvf GraphicsMagick-LATEST.tar.gz
cd GraphicsMagick-1.3.
yum install gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel jasper jasper-devel bzip2-devel freetype-devel
./configure
make install
gm version
命令行使用,pdf转图片:
gm convert +adjoin test.pdf ./test/magic%03d.png
三、安装poppler,包含了pdftocairo:
centos上直接安装:
yum install poppler-utils.x86_64
命令行使用,将pdf第一页转为svg文件:
pdftocairo -rx -ry -svg -q -f -l /usr/tmp/test.pdf /usr/tmp/test1.svg
下面的可以忽略:
安装poppler the hard way
解压cmake-3.12..tar.gz,fontconfig-2.13..tar.bz2,
poppler-0.67..tar.xz,poppler-data-0.4..tar.gz
这四个文件后 先安装 cmake
yum install curl(如果没装)
cd /usr/software/cmake-3.12./
./bootstrap
gmake
make install 然后安装fontconfig
yum -y install fontconfig
yum install fontconfig-devel 安装openjpeg2
yum install openjpeg2
yum install openjpeg2-devel 安装poppler:
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=release
make
make install
使用libreoffice转ppt为pdf代码参考:
代码参考:Java使用libreoffice实现office文件转换成pdf格式,支持windows和linux
还可参考:用openoffice+jodconverter+webuploader+pdf.js實現文檔上傳、在線預覽功能
实现PPT在线预览,PPT转图片方案的更多相关文章
- word,excel,ppt在线预览功能
我们在开发web项目时,尤其类似oa功能时总会遇到上传附件并在线预览的功能,发现一款api比较好使,下面简单介绍一下. 微软官网本身提供了在线预览的API 首先将要预览的文档转成.docx,.xlsx ...
- JavaScript实现Word、Excel、PPT在线预览
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_27626333/article/d ...
- pdf word excel ppt 在线预览方案收集
https://www.idocv.com/docs.html http://www.cnblogs.com/wolf-sun/p/3569960.html http://coolwanglu.git ...
- 前端实现在线预览pdf、docx、xls、ppt等文件
思路:前台将各种格式的附件上传到服务器----后台通过方法将这些格式的文件转化成图片,前台通过放映ppt的方式将其展示在页面上. 关键点:reveal.js 参考文章:https://www.awes ...
- web office apps 在线预览实践
摘要 在一些项目中需要在线预览office文档,包括word,excel,ppt等.达到预览文档的目的有很多方法,可以看我之前总结,在线预览的n种方案: [Asp.net]常见word,excel,p ...
- 基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程
大家好,又见面了. 在构建业务系统的时候,经常会涉及到对附件的支持,继而又会引申出对附件在线预览.在线编辑.多人协同编辑等种种能力的诉求. 对于人力不是特别充裕.或者项目投入预期规划不是特别大的公司或 ...
- 文档在线预览开源实现方案一:OpenOffice + SwfTools + FlexPaper
在文档在线预览方面,项目组之前使用的是Microsoft office web apps, 由于该方案需要按照微软License付费,项目经理要我预研一个文档在线预览的开源实现方案.仔细钻入该需求发现 ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案(转)
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
随机推荐
- Java IO流-字符流
2017-11-05 18:34:39 Java中的IO流按数据类型分类分为两种,一是字节流,二是字符流.字符流的出现是为了简化文本数据的读入和写出操作. 如果操作的文件是文本文件,那么使用字符流会大 ...
- IOS-CoreData(增删改查、表关联、分页和模糊查询、多个数据库)
1>什么是CoreData Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数 ...
- word问题禁止宏
[在此处输入文章标题] 解决Word2010关闭文档时提示:"您正在试图运行的函数包含有宏或需要宏支持的内容" http://www.cnblogs.com/rhxuza1993/ ...
- java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...
- [置顶]
VS 2017 众多重构插件
孙广东 2017.7.22 http://blog.csdn.NET/u010019717 1.没有任何插件的情况下: (就是Ctrl + .) 注意:这个. 要是英文的才行! 右键菜单也是 ...
- 取出表A中第31到第40记录
方法一: select top 10 * from A where RowId not in (select top 10 RowId from A) 方法二(使用临时表): with tempTab ...
- windows server 2008 r2 修改远程登入的端口号(3389)
步骤:打开“开始→运行”,输入“regedit”,打开注册表,进入以下路径:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal ...
- Mac OS下面安装mysql以及mysql常用命令
使用brew安装mysql brew install mysql 安装成功后使用下面命令启动/关闭服务 brew services start mysql brew services stop mys ...
- 复利计算5.0(改成Java版本)与 单元测试
//由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...
- nexus yum 私服集成
nexus 集成了 yum 私服使用起来还是比较简单的 配置 yum proxy 实际使用我们可能需要配置centos 以及epel 的源 centos可以用http://mirror.cento ...