您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

SpringBoot 实现 Office 各种格式在线预览

时间:2022-06-06 20:28:16  来源:  作者:互联网架构小马哥

来源:
blog.csdn.NET/jxlhljh/article/detAIls/119815808

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/ target=_blank class=infotextkey>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也可,看官网说明进行。

SpringBoot 实现 Office 各种格式在线预览

 

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的问题:

SpringBoot 实现 Office 各种格式在线预览

 

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

SpringBoot 实现 Office 各种格式在线预览

 

/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的

SpringBoot 实现 Office 各种格式在线预览

 

install.sh如下

SpringBoot 实现 Office 各种格式在线预览

 

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

SpringBoot 实现 Office 各种格式在线预览

 

手工再执行一次安装看看

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 
SpringBoot 实现 Office 各种格式在线预览

 

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

SpringBoot 实现 Office 各种格式在线预览

 

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-previewservertarget目录下找到对应的二进制文件

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

解决乱码前:

SpringBoot 实现 Office 各种格式在线预览

 

解决乱码后:

SpringBoot 实现 Office 各种格式在线预览

 

5.预览展示

1.properties

SpringBoot 实现 Office 各种格式在线预览

 

2.pdf

SpringBoot 实现 Office 各种格式在线预览

 

3.word

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

SpringBoot 实现 Office 各种格式在线预览

 

6.附件

SpringBoot 实现 Office 各种格式在线预览

 

链接: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/


Tags:SpringBoot   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
公司用了六年的 SpringBoot 项目部署方案,稳得一批!
本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作。 profiles指定不同环境的配置 maven-assembly-plugin打发布压...【详细内容】
2024-01-10  Search: SpringBoot  点击:(185)  评论:(0)  加入收藏
SpringBoot 中的热部署和热加载
在Spring Boot开发调试中,如果我们每修改一行代码都需要重启调试,可能会比较耗时。Spring Boot团队针对这个问题提供了spring-boot-devtools(简称:Devtools)插件,试图提高开发和调...【详细内容】
2023-11-06  Search: SpringBoot  点击:(256)  评论:(0)  加入收藏
SpringBoot 调用外部接口的四种方式
1、简介在Spring-Boot项目开发中,当本模块的代码需要访问外面模块接口,或外部url链接的需求的时候, 需要使用网络连接调用,下面提供了四种方式(排除dubbo的方式)供大家选择。方式...【详细内容】
2023-11-06  Search: SpringBoot  点击:(317)  评论:(0)  加入收藏
Springboot 框架中事件监听和发布机制详细介绍
事件监听和发布是Spring Framework中的一种机制,用于实现松散耦合的组件之间的通信。下面是事件监听和发布的详细过程:事件发布的过程: 创建事件对象:首先,您需要创建一个事件类,...【详细内容】
2023-11-02  Search: SpringBoot  点击:(266)  评论:(0)  加入收藏
Springboot 中的 PropertySource 管理配置属性的机制
Spring Framework 中的 PropertySource 是一种用于管理配置属性的机制,它允许你将配置信息从各种来源(如属性文件、环境变量、数据库等)加载到应用程序中。在 Spring 中,Propert...【详细内容】
2023-10-29  Search: SpringBoot  点击:(230)  评论:(0)  加入收藏
如何将本地jar文件打包到 springboot 执行jar文件中
这一系列课程将包含Spring Boot 许多关键的技术和工具,包括 Mybatis-Plus、Redis、Mongodb、MinIO、Kafka、MySQL、消息队列(MQ)、OAuth2 等相关内容。如何将本地jar文件打包到...【详细内容】
2023-10-27  Search: SpringBoot  点击:(283)  评论:(0)  加入收藏
Java面试题之SpringBoot 框架
谈谈怎么理解 SpringBoot 框架 Spring Boot 是 Spring 开源组织下的子项目, 是 Spring 组件一站式解决方案, 主要是 简化了使用 Spring 的难度, 简省了繁重的配置, 提供了各种启...【详细内容】
2023-09-28  Search: SpringBoot  点击:(216)  评论:(0)  加入收藏
SpringBoot 并发编程学习历程
本教程大概目录: 模拟单线程情节 用Callable实现 并发编程 用DeferedResult实现异步处理###模拟单线程情节。/** * Created by Fant.J. */@RestController@Slf4jpublic class...【详细内容】
2023-09-27  Search: SpringBoot  点击:(208)  评论:(0)  加入收藏
Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。我之前的HTTP开发是用apache的Htt...【详细内容】
2023-09-14  Search: SpringBoot  点击:(323)  评论:(0)  加入收藏
16个SpringBoot 扩展接口
1.背景Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机...【详细内容】
2023-08-28  Search: SpringBoot  点击:(134)  评论:(0)  加入收藏
▌简易百科推荐
Qt与Flutter:在跨平台UI框架中哪个更受欢迎?
在跨平台UI框架领域,Qt和Flutter是两个备受瞩目的选择。它们各自具有独特的优势,也各自有着广泛的应用场景。本文将对Qt和Flutter进行详细的比较,以探讨在跨平台UI框架中哪个更...【详细内容】
2024-04-12  刘长伟    Tags:UI框架   点击:(7)  评论:(0)  加入收藏
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(11)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(23)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(62)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(52)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(43)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(58)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(72)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(95)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(91)  评论:(0)  加入收藏
站内最新
站内热门
站内头条