SpringBoot实现万能文件在线预览,已开源,真香

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot实现万能文件在线预览,已开源,真香相关的知识,希望对你有一定的参考价值。

参考技术A 推荐一个用Spring Boot搭建的文档在线预览解决方案:

kkFileView,一款成熟且开源的文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,免费!

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

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

支持所有类型的文本文档预览, 由于文本文档类型过多,无法全部枚举,默认开启的类型如下

txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd

文本预览效果如下

文本预览效果如下

支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像),预览效果如下

图片预览

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

图片预览模式预览效果如下

word文档预览1

pdf预览模式预览效果如下

word文档预览2

支持ppt,pptx文档预览,和word文档一样,有两种预览模式

图片预览模式预览效果如下

ppt文档预览1

pdf预览模式预览效果如下

ppt文档预览2

支持pdf文档预览,和word文档一样,有两种预览模式

图片预览模式预览效果如下

pdf文档预览1

pdf预览模式预览效果如下

pdf文档预览2

支持xls,xlsx文档预览,预览效果如下

excel文档预览

支持zip,rar,jar,tar,gzip等压缩包,预览效果如下

压缩文件预览1

可点击压缩包中的文件名,直接预览文件,预览效果如下

压缩文件预览2

理论上支持所有的视频、音频文件,由于无法枚举所有文件格式,默认开启的类型如下

mp3,wav,mp4,flv

视频预览效果如下

多媒体文件预览1

音频预览效果如下

多媒体文件预览2

支持CAD dwg文档预览,和word文档一样,有两种预览模式

图片预览模式预览效果如下

cad文档预览1

pdf预览模式预览效果如下

cad文档预览2

考虑说明篇幅原因,就不贴其他格式文件的预览效果了,感兴趣的可以参考下面的实例搭建下

https://github.com/kekingcn/file-online-preview.git

看到这里了,点个赞呗!

SpringBoot 实现 Office 各种格式在线预览(详细教程,包教包会)

点击关注公众号,实用技术文章及时了解

  1. 项目特性

  2. 部署过程

  • 2.1 二进制下载部署文件进行部署

  • 2.2 docker方式部署

  • 2.3 通过源代码编绎部署

部分配置说明

  • 3.1 server.context-path

预览乱码字体问题

预览展示

附件

其他说明

  • 7.1使用openoffice进行转换

  • 7.2 libXext.so.6: cannot open shared object file: No such file or directory


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

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

1.项目特性

  • 支持word excel ppt,pdf等办公文档

  • 支持txt,java,php,py,md,js,css等所有纯文本

  • 支持zip,rar,jar,tar,gzip等压缩包

  • 支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像)

  • 支持mp3,mp4,flv等多媒体文件预览

  • 使用spring boot开发,预览服务搭建部署非常简便

  • rest接口提供服务,跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便

  • 支持普通http/https文件下载url、http/https文件下载流url、ftp下载url等多种预览源

  • 提供zip,tar.gz发行包,提供一键启动脚本和丰富的配置项,方便部署使用

  • 提供Docker镜像发行包,方便在容器环境部署

  • 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持

  • 最最重要Apache协议开源,代码pull下来想干嘛就干嘛

2.部署过程

部署方式,可以直接下载二进制步骤,也可以通过docker直接拉取,还可以通过源码编绎进行,下面分别说明

前提条件:Jdk需要先安装设置好,kkFileWiew是Java开发的,Jdk必需。

tar -xvf jdk-8u191-linux-x64.tar.gz -C /usr/local

cat >> /etc/profile << EOF

export JAVA_HOME=/usr/local/jdk1.8.0_191/
export PATH=\\$JAVA_HOME/bin:\\$PATH
export CLASSPATH=.:\\$JAVA_HOME/lib/dt.jar:\\$JAVA_HOME/lib/tools.jar
EOF

source /etc/profile
[root@localhost testuser]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
2.1 二进制下载部署文件进行部署

1.从码云发行版本下载最新版发行包,这里只以linux为例,一般服务器都是linux的,如果用windows也可,看官网说明进行。

2.解压kkFileView-x.x.x文件(Windows用.zip包,Linux/MacOS用.tar.gz包),如:

tar xvf kkFileView-4.0.0.tar.gz -C /opt/

3.运行startup脚本(Windows下以管理员身份运行startup.bat,Linux以root用户运行startup.sh

cd /opt/kkFileView-4.0.0/bin

注:linux下kkFileWiew需要LibreOffice的支持,因此startup.sh会判断系统是否已安装LibreOffice,如果没有安装,将自动下载安装,因此需要有互联网环境的支持,如果是内网的机器,可以考虑在一台有互联网环境下的机器上搭建一个http代理服务器,然后通过export命令设置通过代理下载,如在192.168.56.1上搭建了一个http代理(设置了账号和密码),可以通过如下命令执行,然后再执行startup.sh

export http_proxy=http://admin:admin123@192.168.56.1:1080
export https_proxy=http://admin:admin123@192.168.56.1:1080
export no_proxy='127.0.0.1'

运行startup.sh

[root@localhost bin]# ./startup.sh 
Using KKFILEVIEW_BIN_FOLDER /opt/kkFileView-4.0.0/bin
Installing OpenOffice
Loaded plugins: fastestmirror
Determining fastest mirrors
........略
Complete!
Loaded plugins: fastestmirror
No such command: installlocalho. Please use /usr/bin/yum --help
install finshed...
Starting kkFileView...
Please execute ./showlog.sh to check log for more information
You can get help in our official homesite: https://kkFileView.keking.cn
If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers

4.按步骤3的提示执行./showlog.sh查看启动日志,报错,需要解决office.home的问题:

./startup.sh报错,不是一键部署吗?官网直接说.startup.sh难道有坑?查看startup.sh中,定定了几个目录/opt/libpreoffice*,根据官网说的,4.0版本后依赖libpreoffice,继续看/opt目录下,没看到libpreoffice目录存在,说明libpreoffice未安装成功。

/opt目录下,没看到libpreoffice目录存在,说明libpreoffice未安装成功,如下:

[root@localhost opt]# ls -hl /opt/
total 0
drwxr-xr-x. 5 root root 42 Aug 20 13:05 kkFileView-4.0.0

继续看,发现没有安装的情况是要执行install.sh

install.sh如下

看着像是会执行安装的,cd /tmp/LibreOffice_7.1.4.2_Linux_x86-64_rpm/RPMS查看,也确实是下载了很多包

手工再执行一次安装看看

cd /tmp/LibreOffice_7.1.4.2_Linux_x86-64_rpm/RPMS
yum localinstall *.rpm -y

执行成功后再重启.startup.sh,发现能正常启动了。

[root@localhost RPMS]# cd /opt/kkFileView-4.0.0/bin/
[root@localhost bin]# ./startup.sh

5.浏览器访问本机8012端口,如:http://192.168.56.101:8012

6.使用

使用较简单:从步骤4中可以看出,通过传递一个经过base64位的外部文件url地址给kkFileView程序即可如:

http://192.168.56.101:8012/onlinePreview?url=aHR0cDovLzE5Mi4xNjguNTYuMTAxOjgwMTIvZGVtby9hcHBsaWNhdGlvbi5wcm9wZXJ0aWVz

2.2 docker方式部署
##拉取镜像
docker pull keking/kkfileview:v4.0.0 ##官网拉取
docker pull 192.168.56.1:6000/keking/kkfileview:v4.0.0 ##通过私库拉取(有的话)

##运行(第一次)
docker run -itd -p 8012:8012 192.168.56.1:6000/keking/kkfileview:v4.0.0 ##有私库的情况下。
或
docker run -itd -p 8012:8012 keking/kkfileview:v4.0.0

##查看
docker ps -a
docker exec -it 1be9d7d654dc /bin/bash

##停止与启动,
docker stop 容器id
docker start 容器id
2.3 通过源代码编绎部署

1.下载代码,以4.0.0版本为例

git clone https://gitee.com/kekingcn/file-online-preview.git

##切换到v4.0.0版本
git checkout -b v4.0.0 origin/v4.0.0

2.编绎

mvn clean package -Dmaven.test.skip=true

3.编绎成功后,在file-online-preview\\server\\target目录下找到对应的二进制文件

4.再走一遍2.1步骤中的二进制部署方式即可。

3.部分配置说明

通过修改application.properties来修改配置,需要重启程序如:

3.1 server.context-path

默认的访问路径为/onlinePreview,通过server.context-path进行修改,

更详细的配置参见官网的配置说明:

https://kkfileview.keking.cn/zh-cn/docs/config.html

4.预览乱码字体问题

大部分Linux系统上并没有预装中文字体或字体不全,需要把常用字体拷贝到Linux服务器上,具体操作如下:

下载如下字体包http://kkfileview.keking.cn/fonts.zip文件解压完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效,可能需要重启kkFileView程序

unzip -o -d /usr/share/fonts/ fonts.zip
##解压多了一层,需要移动一下到上一层的fonts下面,然后再删除zhFonts文件夹
mv /usr/share/fonts/zhFonts/* /usr/share/fonts/
cd /usr/share/fonts/
mkfontscale 
mkfontdir
fc-cache

如果报mkfontscale命令不存在执行

yum install mkfontscale -y

解决乱码前:

解决乱码后:

5.预览展示

1.properties

2.pdf

3.word

word也是通过转换成pdf再浏览的

6.附件

链接:https://pan.baidu.com/s/1sXYjx1_16I5JFGyxEja_bA 提取码:kixv

7.其他说明

7.1使用openoffice进行转换

有时发现liboffice并没有传说官网中说的那么稳定与好,可能是我没用好,我自己转换试验是觉得openoffice更稳定,转换大于10M的word也顺利,反而用官网推荐的liboffice转换,常常崩并把office进程给搞没了,所以我这边一般是使用openoffice进行转换。

不需要改什么,就是直接再安装openoffice4就好,安装过程见

https://blog.csdn.net/jxlhljh/article/details/117041944

修改application.properties中的配置

#openoffice home路径
#office.home = C:\\\\Program Files (x86)\\\\OpenOffice 4
#office.home = $KK_OFFICE_HOME:default
office.home = /opt/openoffice4

然后进行kkfileView的重启,kkfileView启动时发现/opt/openoffice4目录有安装了openoffice4会以openoffice4进行启动。

7.2 libXext.so.6: cannot open shared object file: No such file or directory
#/opt/openoffice4/program/soffice.bin: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
#先执行:
yum install -y libXext.x86_64

##然后
cp -a /usr/lib64/libXext.so.6 /opt/openoffice4/program/

来源:blog.csdn.net/jxlhljh/article/details/119815808

推荐

Java面试题宝典

技术内卷群,一起来学习!!

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

以上是关于SpringBoot实现万能文件在线预览,已开源,真香的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot实现万能文件在线预览,已开源,真香!!!

SpringBoot实现万能文件在线预览,已开源,真香!!!

SpringBoot 实现万能文件在线预览

上班第一天公司要你用Spring Boot 实现万能文件在线预览

万能文件在线预览项目,开源!

SpringBoot实现文件在线预览