# 一、kkFileView基础
kkFileView官网 (opens new window)
kkFileView代码官网-Github (opens new window)
kkFileView代码官网-Gitee (opens new window)
kkFileView在线演示地址 (opens new window)
kkFileView详细使用文档 (opens new window)
# 1.1 kkFileView简介
kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等。
kkfileView 是基于http协议进行交互的。外部系统将需要预览的文件url 发送给kkfileView,kkfileView 返回预览的文件。这样做的好处很明显,不需要改造原有系统,降低开发成本,而且是语言无关性的,不同语言的项目也可以使用。
# 1.2 特性
- 使用 spring-boot 开发,预览服务搭建部署非常简便;
- rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便;
- 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持;
- 最最重要 Apache 协议开源。
# 1.3 支持的格式
支持文本类(txt,html,json,properties,md,log,java)、图片类(jpg,jpeg,png,gif)、word文档类(doc,docx)、ppt文档类(ppt,pptx)、pdf文档类、Excel文档类(xls,xlsx)、压缩文件类、多媒体文件类(mp3,wav,mp4,flv)、CAD文档类、流程图bpmn文件类、D模型文件类、dcm医疗数位影像文件类、drawio流程图类。
具体格式如下:
- 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx,xlam, xla ,pages 等 Office 办公文档
- 支持 wps, dps, et, ett, wpt 等国产 WPS Office 办公文档
- 支持 odt, ods, ots, odp, otp, six, ott, fodt, fods 等OpenOffice、LibreOffice 办公文档
- 支持 vsd, vsdx 等 Visio 流程图文件
- 支持 wmf, emf 等 Windows 系统图像文件
- 支持 psd ,eps 等 Photoshop 软件模型文件
- 支持 pdf ,ofd, rtf 等文档
- 支持 xmind 软件模型文件
- 支持 bpmn 工作流文件
- 支持 eml 邮件文件
- 支持 epub 图书文档
- 支持 obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim 等 3D 模型文件
- 支持 dwg, dxf, dwf, iges , igs, dwt, dng, ifc, dwfx, stl, cf2, plt 等 CAD 模型文件
- 支持 txt, xml(渲染), xbrl(渲染), md(渲染), java, php, py, js, css 等所有纯文本
- 支持 zip, rar, jar, tar, gzip, 7z 等压缩包
- 支持 jpg, jpeg, png, gif, bmp, ico, jfif, webp 等图片预览(翻转,缩放,镜像)
- 支持 tif, tiff 图信息模型文件
- 支持 tga 图像格式文件
- 支持 svg 矢量图像格式文件
- 支持 mp3,wav,mp4,flv 等音视频格式文件
- 支持 avi,mov,rm,webm,ts,rm,mkv,mpeg,ogg,mpg,rmvb,wmv,3gp,ts,swf 等视频格式转码预览
- 支持 dcm 等医疗数位影像预览
- 支持 drawio 绘图预览
# 1.4 使用技术
- spring boot
- freemarker
- redisson
- jodconverter
# 1.5 依赖外部环境
- redis (可选,默认不用)
- OpenOffice 或者 LibreOffice( Windows 下已内置,Linux 脚本启动模式会自动安装,Mac OS 下需要手动安装)
# 二、kkFileView搭建
# 2.1 Docker部署
# 4.1.0
docker-compose.yml
version: '3.3'
services:
fileview:
image: keking/kkfileview:latest
container_name: fileview
restart: always
ports:
- "8099:8012"
environment:
KK_FILE_DIR: "/data/file" # 文件路径地址
#KK_BASE_URL: "https://aa.bb.com/preview/" # 配置nginx方向代理转发需要用到,详见官方文档
#KK_CONTEXT_PATH: "/preview/" # 配置nginx方向代理转发需要用到,详见官方文档
volumes:
- ./fileview_data:/data/file
deploy:
resources:
limits:
cpus: "1"
memory: 2G
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 4.4.0
docker-compose.yml
version: '3.3'
services:
fileview_4_4:
image: wangbowen/kkfileview:4.4.0
container_name: fileview_4_4
restart: always
ports:
- "8099:8012"
environment:
KK_FILE_DIR: "/data/file" # 文件路径地址
#KK_BASE_URL: "https://aa.bb.com/preview/" # 配置nginx方向代理转发需要用到,详见官方文档
#KK_CONTEXT_PATH: "/preview/" # 配置nginx方向代理转发需要用到,详见官方文档
volumes:
- fileview_data:/data/file
deploy:
resources:
limits:
cpus: "1"
memory: 2G
volumes:
fileview_data:
driver: local
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
浏览器访问容器8012端口 http://127.0.0.1:8012
即可看到项目演示用首页。
# 三、kkFileView使用
# 3.1 前端使用
如果你的项目需要接入文件预览项目,达到对docx、excel、ppt、jpg等文件的预览效果,那么通过在你的项目中加入下面的代码就可以成功实现:
var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url)));
2
新增多图片同时预览功能,接口如下:
var fileUrl =url1+'|'+url2;//多url使用'|'字符隔开
window.open('http://127.0.0.1:8012/picturesPreview?urls='+encodeURIComponent(base64Encode(fileUrl)));
2
# 3.2 项目使用
项目(前端、kkFileView)均使用docker
部署在同一IP下。
实现方案:
1、在kkFileView
配置代理转发。
version: '3.3'
services:
fileview_4_4:
image: wangbowen/kkfileview:4.4.0
container_name: fileview_4_4
restart: always
ports:
- "8099:8012"
environment:
KK_FILE_DIR: "/data/file"
volumes:
- fileview_data:/data/file
deploy:
resources:
limits:
cpus: "1"
memory: 2G
volumes:
fileview_data:
driver: local
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
说明:
docker
容器映射端口为8099
。kkFileView
服务地址为http://192.168.1.100:8099
。
2、在前端Vue
代码配置请求路径。
#文件预览
VUE_APP_FILE_REVIEW_URL = 'http://192.168.1.100:8099/preview/onlinePreview?url='
2
<template>
<iframe width="100%" ref="myIframe" :src="kkurl + encodeURIComponent(fileUrl)" referrerpolicy="no-referrer"
allow="payment" no-referrer height="100%" frameborder="0">
</iframe>
</template>
<script>
export default {
data() {
return {
kkurl: process.env.VUE_APP_FILE_REVIEW_URL,
fileUrl: "",
};
},
mounted() {
let Base64 = require("js-base64").Base64;
this.fileUrl = Base64.encodeURI('http://oss.uri.com/bucket/category/fileName.pdf');
}
};
</script>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
说明:
- 前端文件预览URL前缀为
http://192.168.1.100:8099/preview/onlinePreview
。
3、在前端Nginx
中配置代理转发。
http {
server {
listen 80;
server_name 192.168.1.100;
location /preview/ {
proxy_pass http://192.168.1.100:8099/;
}
location /onlinePreview/ {
proxy_pass http://192.168.1.100:8099/onlinePreview;
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
说明:
/preview
为自定义转发前缀,将URL进行截取转发,将http://192.168.1.100:80/preview/
转发至http://192.168.1.100:8099/
。/onlinePreview
为kkFileView自带访问前缀,转发kkFileView服务的CSS、img、js等静态文件。