在线浏览文档的开源解决方案

企业应用系统的文档在线浏览

Posted by 就是我啦 on February 23, 2023

在线浏览文档的开源解决方案 - kkFileView

企业应用系统一般都会上传大量的附件,对附件文档的在线浏览就成为刚需。本来这是文档管理系统或者档案管理系统的强项,但作为一般应用系统也应该支持更多的在线浏览功能

  • 有的附件用户未必愿意上传档案系统
  • 应用系统本身支持在线浏览,免除了和档案系统进行交互的麻烦
  • 当然,只是浏览,一般还不用做到共享编辑。那个确实是文档系统该做的
开源用的好,确实能大大减轻开发压力。

缘起

这一需求缘起于最近的一个项目。我们的应用系统初始只支持PDF和图片的在线浏览,而其他文件类型则是一律下载在本地然后由本地软件打开浏览。用户认为这确实是有问题,一来公司内有大量的office文档,强行要求转为PDF格式有点麻烦;二来下载到本地有权限控制风险,无法阻止随意传播。

要求很合理,自然要想办法解决。

方案

网上查了一圈,已经有前人做过很好的分析总结了,一共四个方案,如下:

image-20230223115519770

  • 基本都是利用第三方软件在后台将office文件等转为PDF或者图片传到前台,然后在前台由浏览器直接显示。纯前端的方案貌似现在不是主流
  • 第三方软件主要有OpenOffice和LibreOffice

综合考虑,方案一是最合适的。

KKFileView!

kkFileView

此项目为文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,在取得公司高层同意后以Apache协议开源出来反哺社区,在此特别感谢@唐老大的支持以及@端木详笑的贡献。该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等

项目特性

  1. 支持 office, pdf, cad等办公文档
  2. 支持txt, xml(渲染), md(渲染), java, php, py, js, css等所有纯文本
  3. 支持 zip, rar, jar, tar, gzip 等压缩包
  4. 支持 jpg, jpeg, png, gif, tif, tiff 等图片预览(翻转,缩放,镜像)
  5. 使用 spring-boot 开发,预览服务搭建部署非常简便
  6. rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便
  7. 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持
  8. 最最重要 Apache 协议开源,代码 pull 下来想干嘛就干嘛
  9. 支持Docker部署

官网及文档

地址:https://kkfileview.keking.cn

word文档预览

支持doc,docx文档预览,word预览有两种模式:一种是每页word转为图片预览,另一种是整个word文档转成pdf,再预览pdf。两种模式的适用场景如下

  • 图片预览:word文件大,前台加载整个pdf过慢
  • pdf预览:内网访问,加载pdf快 图片预览模式预览效果如下 word文档预览1 pdf预览模式预览效果如下 word文档预览2

快速开始

项目使用技术

依赖外部环境

  • redis (可选,默认不用)
  • OpenOffice 或者 LibreOffice( Windows 下已内置,Linux 脚本启动模式会自动安装,Mac OS 下需要手动安装)
  1. 第一步:pull 项目 https://github.com/kekingcn/file-online-preview.git
  2. 第二步:运行 ServerMain 的 main 方法,服务启动后,访问 http://localhost:8012/ 会看到如下界面,代表服务启动成功

输入图片说明

总结

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