实现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文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
随机推荐
- 动态规划-Predict the Winner
2018-04-22 19:19:47 问题描述: Given an array of scores that are non-negative integers. Player 1 picks on ...
- PHPUnit简介及使用(thinkphp5的单元测试安装及使用)
PHPUnit简介及使用(thinkphp5的单元测试安装及使用) 一.总结 一句话总结:直接google这个phpunit(how to use phpunit),然后去官网看使用样例和手册,那些英 ...
- 不能用Xming连接到 Centos 7
修改/etc/gdm/custom.conf 之后, Centos 6是没有问题的. 可是Centos 7 不行. 根据这个连接,运行firewall-config,把网络改到trusted级别, 能 ...
- spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar)
spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar) 如果使用的run as – java a ...
- Rails 5 Test Prescriptions 第5章 Testing Models
Rails,model层包含业务逻辑和储存逻辑.其中储存逻辑被ActiveRecord处理. 在model中,不是每件事都必须是ActiveRecord对象.model layer可以包含各种服务,对 ...
- 缓存cache(5.2新:redis): gem faker (6600✨) 命令行工具curl(系统内置,可在git上看到文档)
⚠️本章节记录缓存的一些方法的用法案例,配合这篇博客一起阅读:https://i.cnblogs.com/EditPosts.aspx?postid=8776632 前置种子 https://git ...
- Python 实现图片上表格的写入
直接上代码:import matplotlib.pylab as pltimport numpy as npplt.figure()axes=plt.gca()y= np.random.randn(9 ...
- bzoj3172: [Tjoi2013]单词 ac自动机
某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个单词 ...
- 使用POI动态更新导出的EXCEL模板中的列
基本思路: 1.从附件服务器上取得模板的流文件 2.拿到流文件之后再使用workbook.write(outs);方法改变流文件中的数据. else if (pageContext.getParame ...
- epoint:TreeView
Epoint.Web.UI.WebControls2X.EpointTreeNode 思路:就是使用递归 RootNodeText 根节点名称RootNodeUrl 根节点路径ShowRootNode ...