当前位置: 首页 > 后端技术 > PHP

基于unoconv的在线办公预览

时间:2023-03-29 19:16:28 PHP

方案选择这几天一直在搞在线文档预览。我已经在线检查了几种解决方案。第一种方法:使用google的在线预览->国内Q,通过第二种方法:使用第三方例如:永中dcs->要钱,通过第三种方式:先转为pdf,再使用pdf在线预览插件-intopreview->服务器负担比较大。第四种:自己写分析库->我的实力,你在逗我吗?经查,第三种方案可行。不过之前做简单的web开发,觉得文档转换比较耗cpu,应该不能适应大规模并发的情况。在segmentfault上也提出了一个问题:PHP长期的服务设计和前端交互,一直没有很好的解决。后来问了一个用unoconv把office文件转成pdf的同学,然后提醒用户,文档转换是通过内部信件完成的。中间使用了轻量级的消息队列php-resque。与通常的php开发不同的是,除了cgiserver,还有一个Worker,专门用来处理文档转换的。大致流程是:PHP处理完前端上传的文件后,增加了将文件转换到redis的任务,然后不断判断转换是否完成。看实现:https://github.com/nladuo/online_office_viewer效果安装sudoapt-getinstallunoconvredis-serverphp5-redisgitclonehttps://github.com/nladuo/online_office_viewer.gitcdonline_office_viewer&&composerinstallstartredisredis-server启动Workercdonline_office_viewer/clibash./start_worker.sh启动CGI服务器cdonline_office_viewerphp-S0.0.0.0:8888测试转换选择一个文件等待上传查看Worker的日志转换成功后注意如果转换有乱码,是因为linux系统上没有windows的字体,需要把字体文件拷贝到服务器上。具体可以百度unoconv中文乱码。