要想做一个在线文档预览的功能,查到的方案是先转换成pdf,再使用pdfviewer来预览。
文档转换一般需要很长时间,而且需要大量的cpu。考虑并发性是否需要搞一个队列来处理文档转换?
另外,如何和前端交互呢?直接ajax等待返回得到pdf的地址,这样ok吗?
要想做一个在线文档预览的功能,查到的方案是先转换成pdf,再使用pdfviewer来预览。
文档转换一般需要很长时间,而且需要大量的cpu。考虑并发性是否需要搞一个队列来处理文档转换?
另外,如何和前端交互呢?直接ajax等待返回得到pdf的地址,这样ok吗?
4 回答13.2k 阅读✓ 已解决
5 回答7.7k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
1 回答950 阅读✓ 已解决
1 回答1.4k 阅读
1 回答1.4k 阅读
2 回答992 阅读
这个问题我也研究了一段时间,自己的项目正在做,我说几种办法。
1.使用google在线文档预览功能
google是有一套在线文档编辑程序的,实际上是可以直接调用谷歌的接口来预览在线文档的,但是有个关键问题,国内有墙,所以这个方案不是很好。
2.使用第三方api
可以使用百度文库的第三方云服务
https://cloud.baidu.com/produ...
或者I DOC V 提供的在线预览按钮。
https://www.idocv.com/
3.php的库自己解析调用
正如你说你想转换成pdf然后pdfviewer但是这种需要有个列队来定时处理文档。我的想法是只允许用户上传docx或者pptx这种支持xml格式的文档,主要是为了保证兼容性。php有phpword phpexcel等等相关的库,具体可以去composer的列表搜索下,这些库可以把文档内容直接输出成html,我让用户直接预览html就好了。这样也避免了文档被用户随意下载,虽然html也可以复制粘贴~~~暂时我的项目就想使用这种方案。
4.使用js让客户端去解析
我的想法还是给客户端传递数据,然后通过js来解析office文档实现预览,在npm的列表当中搜过一些库,但是还没研究,如果实在都不行可能会自己想办法写一个。这种文档解析压力转到客户端是比较好的,毕竟office文档内容实际情况会更复杂一些,以上的3种情况表现力都十分有限,从百度文库的表现你就看出来了。
总结
在线预览这种事情对在线教育行业我觉得是挺有用的一个需求,但是实际上wps和msoffice中间还有很多兼容性问题,以及msoffice之前的2003 2007还有好多学校在用,还在教学生如何用,所以这又是很麻烦的一件事情。楼主要是有更好的方案希望能共同交流学习。