在线浏览文档的开源解决方案 - kkFileView
企业应用系统一般都会上传大量的附件,对附件文档的在线浏览就成为刚需。本来这是文档管理系统或者档案管理系统的强项,但作为一般应用系统也应该支持更多的在线浏览功能
- 有的附件用户未必愿意上传档案系统
- 应用系统本身支持在线浏览,免除了和档案系统进行交互的麻烦
- 当然,只是浏览,一般还不用做到共享编辑。那个确实是文档系统该做的
开源用的好,确实能大大减轻开发压力。
缘起
这一需求缘起于最近的一个项目。我们的应用系统初始只支持PDF和图片的在线浏览,而其他文件类型则是一律下载在本地然后由本地软件打开浏览。用户认为这确实是有问题,一来公司内有大量的office文档,强行要求转为PDF格式有点麻烦;二来下载到本地有权限控制风险,无法阻止随意传播。
要求很合理,自然要想办法解决。
方案
网上查了一圈,已经有前人做过很好的分析总结了,一共四个方案,如下:

- 基本都是利用第三方软件在后台将office文件等转为PDF或者图片传到前台,然后在前台由浏览器直接显示。纯前端的方案貌似现在不是主流
- 第三方软件主要有OpenOffice和LibreOffice
综合考虑,方案一是最合适的。
KKFileView!
kkFileView
此项目为文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,在取得公司高层同意后以Apache协议开源出来反哺社区,在此特别感谢@唐老大的支持以及@端木详笑的贡献。该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等
项目特性
- 支持
office, pdf, cad等办公文档 - 支持
txt, xml(渲染), md(渲染), java, php, py, js, css等所有纯文本 - 支持
zip, rar, jar, tar, gzip等压缩包 - 支持 jpg, jpeg, png, gif, tif, tiff 等图片预览(翻转,缩放,镜像)
- 使用 spring-boot 开发,预览服务搭建部署非常简便
- rest 接口提供服务,
跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便 - 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持
- 最最重要 Apache 协议开源,代码 pull 下来想干嘛就干嘛
支持Docker部署
官网及文档
地址:https://kkfileview.keking.cn
word文档预览
支持doc,docx文档预览,word预览有两种模式:一种是每页word转为图片预览,另一种是整个word文档转成pdf,再预览pdf。两种模式的适用场景如下
- 图片预览:word文件大,前台加载整个pdf过慢
- pdf预览:内网访问,加载pdf快 图片预览模式预览效果如下
pdf预览模式预览效果如下

快速开始
项目使用技术
- spring boot: spring boot开发参考指南
- freemarker
- redisson
- jodconverter
依赖外部环境
- redis (可选,默认不用)
- OpenOffice 或者 LibreOffice( Windows 下已内置,Linux 脚本启动模式会自动安装,Mac OS 下需要手动安装)
- 第一步:pull 项目 https://github.com/kekingcn/file-online-preview.git
- 第二步:运行 ServerMain 的 main 方法,服务启动后,访问 http://localhost:8012/ 会看到如下界面,代表服务启动成功

总结
- 试用了一下,确实好用
- 开源Apache协议,商用比较友好
- 偶尔乱码之类的小bug还有,但总还有解决办法
- Docker方式部署确实比较方便