技术标签: spring boot java 后端
项目特性
部署过程
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
支持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下来想干嘛就干嘛
部署方式,可以直接下载二进制步骤,也可以通过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:[email protected]:1080 export https_proxy=http://admin:[email protected]: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步骤中的二进制部署方式即可。
通过修改 application.properties
来修改配置,需要重启程序如:
3.1 server.context-path
默认的访问路径为 /onlinePreview
,通过 server.context-path
进行修改,
更详细的配置参见官网的配置说明:
https://kkfileview.keking.cn/zh-cn/docs/config.html
大部分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
解决乱码前:
解决乱码后:
1.properties
2.pdf
3.word
word也是通过转换成pdf再浏览的
链接:https://pan.baidu.com/s/1sXYjx1_16I5JFGyxEja_bA 提取码:kixv
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/
1.函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段2.语法:def 函数名(参数列表): 函数体 return XXX可以返回多个值,返回的多个值组成一个元组,返回值加上一对中括号,则返回一个列表函数分为定义和调用练习:定义一个函数,实现两个数字的加、减、乘、除3.可更改(mutable)与不可更改(immutable)对象在 python 中,strings, tuples, ...
升级git(版本太老,go编译的时候报错)# 卸载gityum remove -y git# 编译安装新的gitwget https://github.com/git/git/archive/v2.17.0.tar.gztar -zxvf v2.17.0.tar.gz yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -ycd git_crd资源创建成功了,sts没有创建
基于Spring Security+Spring MVC的web应用,为了防止跨站提交攻击,通常会配置csrf,即:1 http ...>2 ...3 csrf /> 4 http>如果应用中有Post方式访问的Rest服务(参考下面的代码),会很不幸的发现,所有POST方式请求的服务会调用失败。1
http://www.mulesoft.org/documentation/display/current/HTTP+Transport+Reference_muleesb 社区官网
http://www.sina.com.cn --> bbs http://bbs.sina.com.cn -->要完成此效果需要两个步骤第一步:把如下代码加入到区域中-->STYLE>.......spanstyle {...}{...}{...}{LEFT: -5000px; POSITION: absolute}STYLE>script>......var imgwidth=468va
sftp是ftp协议的升级版本,是牺牲上传速度为代价,换取安全性能,本人开始尝试使用Tamir.SharpSSH.dll但它对新版本的openssh 不支持,所有采用Ssh.Net方式 需要依赖:Renci.SshNet.dll 链接: http://pan.baidu.com/s/1nvuHFVN 密码: hh49类using System;using System.Collections.G...
想要实现规约转换必须先得理解modbus rtu/ascii/tcp 规约. 我吃了这个亏,一开始就专注于小组的代码, 导致看了半天云里雾里, 随开始找资料, modbus规约那份pdf可以看看, 理解三点:(1) 上下行报文的概念 (2) 正常报文和异常报文 (3) RTU/ASCII报文帧之间的差别. 前面一点那份文档一点没提, 对我这种刚入行的人来说看起来不知所云. 关于理解ASCII模...
查看该表,发现并没有实现实例化接口。 通过下面方法反射出所有的属性,发现确实多了一个$change 和一个serialVersionUID。public static void showAnnotationWrodOther(){ Field[] fields = DbApp.class.getFields(); for (Field field : fiel..._c# update 不存在字段
目前我在项目中需要对播放的音频设置不同的速率(0.8、1、1.3倍),存在如下的疑惑:1.使用MediaPlayer,这个类是使用的最广泛的,但不提供相应的设置速率的方法。2.SoundPool,适合播放游戏中的急促 短暂的音效,只能播放大概10秒的音频,且不提供读完音频的回调方法。3.AudioTrack,这个类可以进行速率的设置,但只能播放已经解码的PCM文件流,如果是文件的话只支持wav格式..._android播放pcm怎么快进
封装json,获取url参数_h5跳转展示表格数据
因为作业要求使用c语言代码,这里先附上一段摘自网上的代码 感谢KalaerSun的c语言代码,摘自https://blog.csdn.net/qq_25247589/article/details/62892140 1 #include <wiringPi.h> 2 #include <stdio.h> 3 #include &l...
CNN 简介实现对图像的高准确率识别离不开一种叫做卷积神经网络的深度学习技术。卷积神经网络主要应用于计算机视觉相关任务,但它能处理的任务并不局限于图像,其实语音识别也是可以使用卷积神经网络。我们将使用识别Mnist手写数字、cifar10图像数据以及猫和狗图像识别数据来让大家对于卷积神经网络有一个大概的了解。什么是卷积神经网络?当计算机看到一张图像(输入一张图像)时,它看的是一大堆像素值。当我们人类对图像进行分类时,这些数字毫无用处,可它们却是计算机可获得的唯一输入。_tensorflow2 卷积神经网络