基于unoconv的在线office预览
这几天在搞在线文档预览,网上查了几种方案,
第一种:使用google的在线预览 -> 国内被Q,pass
第二种:使用第三方的,比如:永中dcs -> 要钱,pass
第三种:先转换为pdf,在使用pdf在线预览插件预览 -> 对服务器负担比较大。
第四种:自己写解析库 -> 我这实力,开玩笑呢?
查了查,也就第三种可行。不过我之前都是做的简单的web开发,想到文档转换对于cpu的消耗比较大,应该无法适应大规模的并发情形。也在segmentfault上提了一个问题:php长时间的服务的设计与和前端的交互,不过并没有得到很好的解决。
后来我问了一个同学,他之前用的unoconv把office文件转为pdf,然后通过站内信的方式提醒用户文档转换完成。中间用了php-resque这个轻量级消息队列。
和平时的php开发不同,除了cgi服务器以外,还要有个Worker,专门用来处理文档转换。
大概流程就是:php处理前端上传来的文件后,把转化文件的任务添加到redis里,然后不断的判断转换是否完成,转换完成后把pdf的路径传给前端,前端跳转过去。
实现
见:https://github.com/nladuo/online_office_viewer
效果
安装
sudo apt-get install unoconv redis-server php5-redis
git clone https://github.com/nladuo/online_office_viewer.git
cd online_office_viewer && composer install
启动redis
redis-server
启动Worker
cd online_office_viewer/cli
bash ./start_worker.sh
启动CGI服务器
cd online_office_viewer
php -S 0.0.0.0:8888

测试转换
选择一个文档
等待上传
查看Worker的日志
转换成功后
基于unoconv的在线office预览的更多相关文章
- 手把手教你用 Spring Boot搭建一个在线文件预览系统!支持ppt、doc等多种类型文件预览
昨晚搭建环境都花了好一会时间,主要在浪费在了安装 openoffice 这个依赖环境上(Mac 需要手动安装). 然后,又一步一步功能演示,记录,调试项目,并且简单研究了一下核心代码之后才把这篇文章写 ...
- 基于jQuery页面窗口拖动预览效果
今天给大家分享一款基于Query页面窗口拖动预览效果.这是一款基于jQuery+HTML5实现的模拟页面窗口显示拖动窗口预览特效.这款实例适用浏览器:IE8.360.FireFox.Chrome.Sa ...
- 关于云平台中OFFICE预览与视频预览的解决办法
最近,随着firefox x64的升级,出现flash插件完全被禁止的现象,html5替换是大势所趋,原来我们在云平台中有多处使用flash的地方,比如OFFICE预览,视频播放,游戏等,现对于OFF ...
- office web apps 在线问答预览
最近在做项目时,需要用到在线文档预览,看过明道的一篇搭建office web apps服务的文章,但是由于时间的关系,没有仔细研究,这几天有时间,就拿出来研究了下,折腾了几天终于完成了部署,然后就搬过 ...
- LogicalDOC office预览中文乱码的问题
近期在试用LogicalDOC,一个文档管理系统. 上传的office文件预览中文乱码 问题原因是LibreOffice缺少对应的中文字体导致,只需要把对应的中文字体拷贝到/opt/libreoffi ...
- 问题记录,如何解决confluence的office预览的时候的乱码问题
在新的服务器(ubuntu16.04)上安装confluence,预览office的附件的时候,发现中文无法正确显示 在网上搜了一下,搜到一篇官方的文档,是关于这个问题的 问题原因: 在服务器上没有安 ...
- 基于diango简易BLOG图片预览
注册界面 登陆界面 博客主界面 个人站点主页 文章详情页 个人博客后台 添加文章页 修改密码页
- vue-pdf的使用方法及解决在线打印预览乱码
最近在用vue做项目的时候,页面中需要展示后端返回的PDF文件,于是便用到了vue-pdf,其使用方法为 : npm install --save vue-pdf 官网地址:https://www.n ...
- 基于element ui的图片预览插件
写插件很简单,满足两个条件即可,一.基本的逻辑思路,二.熟悉插件语法要求.本次Vue插件也比较简单,点击“查看图片”用轮播的方式限制用户上传的图片,如图: 项目采用的是vue-element-admi ...
随机推荐
- src/lxml/includes/etree_defs.h:14:31: 致命错误:libxml/xmlversion.h:没有那个文件或目录
fedora21平台下解决办法:yum install libxml-devel ubuntu下可以使用 apt-get intalll xxxx 如果仍然出现,可以尝试安装这两个包libxslt-d ...
- Zookeeper 系列(四)ZKClient API
Zookeeper 系列(四)ZKClient API 环境准备: <dependency> <groupId>com.101tec</groupId> <a ...
- httpclient学习(原创)
--httpmime-4.2.5.jar 跟提交Form相关的类 这一块主要post数据的提交.每一条数据同name和content组成.content可能是字节数组或是流.提交这一类(MIME)的 ...
- postman模拟登录接口
https://blog.csdn.net/qq_22219911/article/details/80235272
- Oracle sql的基本优化写法和思路。
首先简单介绍下常规的sql优化的方式: 1.肯定有人说建索引啊. 2.数据量实在太大,建分区啊. 3.其实基于目前公司的业务还有一种办法那就是向上聚集表.根据查询业务,专门抽取上来一张表,直接做到se ...
- 2018.10.12 NOIP模拟 棋盘问题(切比雪夫距离)
传送门 貌似是防ak题? 考试的时候想到了做四次cdqcdqcdq于是给自己多套了一个lognlognlogn结果还MLEMLEMLE 0分.(记得最后5分钟调出来的时候是那么的欣喜 下来发现并不需要 ...
- 全面理解iOS开发中的Scroll View[转]
from:http://mobile.51cto.com/hot-430409.htm 可能你很难相信,UIScrollView和一个标准的UIView差异并不大,scroll view确实会多一些方 ...
- ZOJ2482 IP Address 2017-04-18 23:11 44人阅读 评论(0) 收藏
IP Address Time Limit: 2 Seconds Memory Limit: 65536 KB Suppose you are reading byte streams fr ...
- android插件化简述
2015年是Android插件化技术突飞猛进的一年,随着业务的发展各大厂商都碰到了Android Native平台的瓶颈: 从技术上讲,业务逻辑的复杂导致代码量急剧膨胀,各大厂商陆续出到65535方法 ...
- wc.java
GitHub代码链接 1.项目相关要求 •基本功能列表: -c 统计文件中字符的个数 -w 统计文件中的词数 -l 统计文件中的行数 •拓展功能: -a 统计文件中代码行数.注释行数.空行 2 ...