• 基于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的日志

    转换成功后

     
    
    
  • 相关阅读:
    2017.5.11下午学习内容
    windows消息和消息队列
    探索Win32系统之窗口类(转载)
    WinMain函数详解(转载)
    Ajax爬取实战头条街拍美图
    Ajax实战微博
    Ajax请求分析实战
    ubuntu 安装rails
    ubuntu Thunderbird 接收邮件显示乱码的问题排除
    ubuntu 开机挂载windows分区
  • 原文地址:https://www.cnblogs.com/flzs/p/10164561.html
Copyright © 2020-2023  润新知