首页 > 技术文章 > kkFileView 预览环境搭建

sujiujiu 2021-05-27 15:57 原文

0、概述

KKFileView是基于SpringBoot和OpenOffice编写的开源的文件转换和在线预览工具,但目前官方已经隐藏了已经编译好的版本,现在是需要加他们的付费群才可以拿,官网只能拿到源码,然后我就自己拿源码用maven编译了。

kkFileView支持的格式:doc、docx、ppt、pptx、xls、xlsx、zip、rar、mp4、mp3以及众多类文本及代码如txt、html、xml、java、properties、sql、js、md、json、conf、ini、vue、php、py、bat、gitignore。

官网:https://kkfileview.keking.cn/zh-cn/docs/production.html

1、准备

kkfileview需要的几个东西:Java、OpenOffice或LiberOffice、编译好的kkfileview包、字体包。除了java,我都有传到百度云,链接:https://pan.baidu.com/s/1_838zD_aLaqmpb4V4Sz8vQ 提取码: b67s

1.1 kkfileview

1.2 OpenOffice

我这里测试用的OpenOffice,没试过LiberOffice,OpenOffice还可以,各种格式都兼容,口碑较好。

1.3 fonts.zip

可以在linux的使用的中文字体包,防止乱码,这个随便在什么时候装。

2、安装

2.1 Java

有条件最好配环境联网吧,依赖挺多的。

yum install java

在这里插入图片描述
通过yum安装的默认路径为:/usr/lib/jvm
在这里插入图片描述
/etc/profile的最后加上java的环境变量:

JAVA_HOME=/usr/java/jre1.8.0_211
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

在这里插入图片描述
然后执行(注意最前面的点.)

. /etc/profile

查看java的版本,看是否安装成功。
在这里插入图片描述

2.2 OpenOffice

这步或许可以省略,也可以先安装,不冲突。
1、下载的包和解压后的目录zh-CN,我们下的是中文包。
在这里插入图片描述
2、进入安装,主要是RPMS下的

cd zh-CN/RPMS/
rpm -ivh *.rpm

在这里插入图片描述
3、安装完后,再进入RPMS的下一层目录,只要选择一个即可,我们选择redhat即可。

cd zh-CN/RPMS/desktop-integration
rpm -ivh  openoffice4.1.9-redhat-menus-4.1.9-9805.noarch.rpm

在这里插入图片描述
4、安装完启动,启动命令如下,不加&就只是临时启动:

/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

启动后,可以使用ps查看进程是否启用
在这里插入图片描述

2.3 kkfileview

想要最新的自己编译的,自己看官网用maven打包,这里我已经打包好了。进入/root/kkFileView-3.5.1/bin(我是直接放在/root下了)直接执行sh startup.sh即可。
在这里插入图片描述
为什么说可以不装openoffice,看我们刚刚执行的脚本
在这里插入图片描述
其中的install.sh,就是它会在DIR_HOME的目录里找是否有soffice.bin这个文件,有就当你装了,就可以看到刚刚我们执行sh startup.sh里输出了如下信息:

Detected office component has been installed in /opt/openoffice4

如果没有就会执行install.sh,内容如下,可知会自动下载:
在这里插入图片描述
此时soffice我们已经开启了,startup.sh脚本也执行了,在浏览器访问ip:8012会跳转到http://ip:8012/index,界面如下:
在这里插入图片描述
里面的txt是我上传测试的文件,可以预览,上传的文件存在`/root/kkFileView-3.5.1/file目录下。

2.4 fonts.zip

1、检查是否有fontconfig这个包,没有就安装

yum install fontconfig

2、将fonts.zip解压,将解压后得到的整个zhFonts目录放入 /usr/share/fonts下,或者干脆放到 /usr/share/fonts下解压:
在这里插入图片描述
3、然后分别执行这三条命令

>>> mkfontscale 
>>> mkfontdir 
>>> fc-cache

在这里插入图片描述

3、模拟接入项目、前端预览

部署起来的kkfileview演示首页的接入说明有说怎么做:
在这里插入图片描述
因为想模拟一下的,但是没前端环境,没关系我们有浏览器,打开console控制台,encodeURIComponent是js自带的方法,base64用其他方法代替一下,在console输入回车:

>>> encodeURIComponent(btoa(encodeURI('http://ip/download/a/百度停用词列表.txt')))
"aHR0cDovLzE5Mi4xNjguMzMuMjE0L2Rvd25sb2FkL2EvJUU3JTk5JUJFJUU1JUJBJUE2JUU1JTgxJTlDJUU3JTk0JUE4JUU4JUFGJThEJUU1JTg4JTk3JUU4JUExJUE4LnR4dA%3D%3D"

那么预览的地址为:

http://192.168.33.214:8012/onlinePreview?url=aHR0cDovLzE5Mi4xNjguMzMuMjE0L2Rvd25sb2FkL2EvJUU3JTk5JUJFJUU1JUJBJUE2JUU1JTgxJTlDJUU3JTk0JUE4JUU4JUFGJThEJUU1JTg4JTk3JUU4JUExJUE4LnR4dA%3D%3D

说明一下,url是需要在浏览器可以打开的,可以预览或者下载(浏览器是可以预览某些文件的),临时使用我们借用Nginx,在配置文件里加入类似代码,然后重启nginx服务:

location /download {
        alias /tmp/;
}

/download是映射目录,在浏览器可以访问,/tmp是我们在环境存放的真实路径,该下的文件可以被/download访问,比如/tmp下有文件/tmp/a/b.txt,则浏览器访问:http://ip/download/a/b.txt,默认端口80。

参考链接:
1、https://my.oschina.net/u/232595/blog/2986127
2、https://blog.csdn.net/qq_44322555/article/details/115193593
3、https://blog.csdn.net/dndndnnffj/article/details/112000034
4、https://www.cnblogs.com/archerhao/p/11423571.html

推荐阅读