文件文档在线预览解决方案——kkFileView

kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等

kkfileview搭建完成后,底层使用了libreoffice7.1正式版作为文档预览引擎,启动服务后,有三个服务进程,第一个服务进程是接口服务,下面两个进程是libreoffice7.1的服务进程

root      42556      1 58 15:41 pts/3    00:00:26 java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.0.0.jar

root      42743  42556  0 15:41 pts/3    00:00:00 /opt/libreoffice7.1/program/soffice.bin -accept=socket,host=127.0.0.1,port=2001;urp; -env:UserInstallation=file:///tmp/.jodconverter_socket_host-127.0.0.1_port-2001 -headless -nocrashreport -nodefault -nofirststartwizard -nolockcheck -nologo -norestore

root      42905  42556  0 15:41 pts/3    00:00:00 /opt/libreoffice7.1/program/soffice.bin -accept=socket,host=127.0.0.1,port=2002;urp; -env:UserInstallation=file:///tmp/.jodconverter_socket_host-127.0.0.1_port-2002 -headless -nocrashreport -nodefault -nofirststartwizard -nolockcheck -nologo -norestore

kkfileview实现了将预览引擎和文件存储解耦,它通过url的方式获取文件文档,在线进行pdf转换和预览,同时将转换过的文件缓存到redis里,重复预览同一个文件时会以极快的速度展现文档(redis数据流会以特殊算法进行压缩存储,比直接将pdf文件放在磁盘上更加节约空间,读取也更加快速)

用nginx搭建了静态资源服务器,设置了安全访问令牌,将原始url处理后得到的url地址作为kkfileview接口的参数传递给接口,即可实现在线预览

比如:原始url是http://202.102.89.242:8088/YWHT/YWHT_563_1631080940826_听智慧房屋租赁合同(改).doc

直接访问是403,不允许直接下载资源的(防止直接被外网下载获取)

合法URL生成的处理步骤

①. 设置令牌过期时间,比如24小时,以当前时间计算,24小时以后的时间戳是1631869386

②将'<过期时间戳><资源URI> <密钥>’组合起来进行md5函数加密,然后再以base64函数加密,将加密后产生的密钥中的+/替换为 -_,删除=号:例如 ,密钥是25768d6b-d44d-48d8-b96c-fed56777804e,将‘1631869386/YWHT/YWHT_563_1631080940826_听智慧房屋租赁合同(改).doc 25768d6b-d44d-48d8-b96c-fed56777804e’处理后得到密钥:K5XnRXPJisdjUmyFc7wwaw

获取资源的合法URL是: http://202.102.89.242:8088/YWHT/YWHT_563_1631080940826_听智慧房屋租赁合同(改).doc?token=K5XnRXPJisdjUmyFc7wwaw&expires=1631869386

③将合法URL进行Base64加密后:

aHR0cDovLzIwMi4xMDIuODkuMjQyOjgwODgvWVdIVC9ZV0hUXzU2M18xNjMxMDgwOTQwODI2X+WQrOaZuuaFp+aIv+Wxi+enn+i1geWQiOWQjCjmlLnvvIkuZG9jP3Rva2VuPUs1WG5SWFBKaXNkalVteUZjN3d3YXcmZXhwaXJlcz0xNjMxODY5Mzg2

④再进行Utf-8 urlencode编码后:

aHR0cDovLzIwMi4xMDIuODkuMjQyOjgwODgvWVdIVC9ZV0hUXzU2M18xNjMxMDgwOTQwODI2X%2BWQrOaZuuaFp%2BaIv%2BWxi%2Benn%2Bi1geWQiOWQjCjmlLnvvIkuZG9jP3Rva2VuPUs1WG5SWFBKaXNkalVteUZjN3d3YXcmZXhwaXJlcz0xNjMxODY5Mzg2

资源预览的url组合成:

http://202.102.89.238:8012/onlinePreview?url=aHR0cDovLzIwMi4xMDIuODkuMjQyOjgwODgvWVdIVC9ZV0hUXzU2M18xNjMxMDgwOTQwODI2X%2BWQrOaZuuaFp%2BaIv%2BWxi%2Benn%2Bi1geWQiOWQjCjmlLnvvIkuZG9jP3Rva2VuPUs1WG5SWFBKaXNkalVteUZjN3d3YXcmZXhwaXJlcz0xNjMxODY5Mzg2

在浏览器里预览office文档效果:(以pdf格式呈现的)

预览图片效果:

Categories: 系统运维