目 录CONTENT

文章目录

飞牛云NAS或者VPS使用Docker部署kkFileView-文件文档在线预览解决方案

yyzq
2024-02-22 / 2 评论 / 4 点赞 / 120,014 阅读 / 3,978 字

引言

当今时代,无论是在教育、商业还是技术领域,我们都面临着大量文档和多媒体文件的处理需求。为了有效管理和预览这些不同格式的文件,需要一个强大、灵活且用户友好的工具。这就是kkFileView的诞生背景。它是一个基于Spring Boot的在线文件预览解决方案,支持广泛的文件类型,包括常见的办公文档、图像、视频和音频文件。
kkFileView的优势在于其使用了流行的Spring Boot框架进行开发,这不仅保证了项目的现代性和可维护性,还意味着它易于上手和部署。它提供了一个简单而强大的REST接口,可以跨平台使用,包括Java、PHP、Python、Go等。这使得kkFileView成为多种应用场景的理想选择,无论是为了个人用途还是集成到企业级系统中。
此外,kkFileView支持从多种来源预览文件,如HTTP/HTTPS URL、FTP下载链接等。它还提供了容易部署的zip和tar.gz发行包,以及Docker镜像,大大简化了部署过程。其丰富的配置项和一键启动脚本也为用户提供了极大的方便。
本教程旨在指导您如何搭建和配置kkFileView,使您能够轻松处理和预览各种文件类型。从基础的安装步骤到高级配置,我们将一步步引导您完成整个过程,确保您能够充分利用kkFileView的强大功能。无论您是开发人员、IT专业人士还是普通用户,本教程都将为您提供所需的一切知识,让您轻松上手kkFileView。让我们开始吧!

image-1737458366787

demo

https://fileview.ywsj.cf/
支持的文件类型

支持文件类型 描述
Office 办公文档 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx, xlam, xla, pages
国产 WPS Office 办公文档 wps, dps, et, ett, wpt
OpenOffice、LibreOffice 办公文档 odt, ods, ots, odp, otp, six, ott, fodt, fods
Visio 流程图文件 vsd, vsdx
Windows 系统图像文件 wmf, emf
Photoshop 软件模型文件 psd, eps
文档 pdf, ofd, rtf
XMind 软件模型文件 xmind
工作流文件 bpmn
邮件文件 eml
图书文档 epub
3D 模型文件 obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim
CAD 模型文件 dwg, dxf, dwf, iges, igs, dwt, dng, ifc, dwfx, stl, cf2, plt
纯文本 txt, xml(渲染), 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. 文本预览
    支持所有类型的文本文档预览, 由于文本文档类型过多,无法全部枚举,默认开启的类型如下 txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd
    文本预览效果如下
    image-1737459221924

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

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

图片预览:word文件大,前台加载整个pdf过慢
pdf预览:内网访问,加载pdf快
图片预览模式预览效果如下
image-1737459319375
pdf预览模式预览效果如下
image-1737459335808
4. ppt文档预览
支持ppt,pptx文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
image-1737459360534
pdf预览模式预览效果如下
image-1737459372302

  1. pdf文档预览
    支持pdf文档预览,和word文档一样,有两种预览模式
    图片预览模式预览效果如下
    image-1737459390575
    pdf预览模式预览效果如下
    image-1737459401910

  2. excel文档预览
    支持xls,xlsx文档预览,预览效果如下
    image-1737459421065
    ps,如碰到excel预览乱码问题,可参考 预览乱码

另xlsx还支持web预览模式(4.3.0版本起默认启用),预览效果如下
image-1737459446418

  1. 压缩文件预览
    支持zip,rar,jar,tar,gzip等压缩包,预览效果如下
    image-1737459468496
    可点击压缩包中的文件名,直接预览文件,预览效果如下
    image-1737459486887

  2. 多媒体文件预览
    理论上支持所有的视频、音频文件,由于无法枚举所有文件格式,默认开启的类型如下
    mp3,wav,mp4,flv
    如有没有未覆盖全面,可通过配置文件指定多媒体类型
    视频预览效果如下
    image-1737459513607
    音频预览效果如下
    image-1737459523934

  3. CAD文档预览
    支持CAD dwg文档预览,和word文档一样,有两种预览模式
    图片预览模式预览效果如下
    image-1737459538295
    pdf预览模式预览效果如下
    image-1737459550699

  4. 流程图bpmn文件预览
    支持bpmn流程图文件预览,预览效果如下
    image-1737459564051

  5. 3D模型文件文件预览
    支持 obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim 等3D模型文件预览,预览效果如下
    image-1737459589352

  6. dcm医疗数位影像预览
    支持dcm医疗数位影像预览,预览效果如下
    image-1737459604636

  7. drawio流程图预览
    支持drawio流程图预览,预览效果如下
    image-1737459640099

14.Markdown预览
支持Markdown预览,预览效果如下
image-1737459710293

准备条件

1)一台服务器或者飞牛NAS
需要便宜VPS的可以参考这个
https://duan.yyzq.eu.org/vps1

点我直达莱卡云官网

香港VPS

香港Colo数据中心,3C直连,平均延时30+ms,免备案

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
香港BGP 标配版 1C 1G 30G 3Mbps 无限 22 元/月 点我购买
香港BGP 限量款 2C 4G 30G 3Mbps 无限 25 元/月 点我购买
香港BGP(弹性) 2 – 16C 4 – 32G 30 – 400G 3 – 20Mbps 无限 22 元/月起 点我购买

香港Mega Two数据中心,三网CN2 GIA优化,实现全国超低延迟。

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
香港CN2 GIA 标配版 1C 1G 20G 3Mbps 无限 30 元/月 点我购买
香港CN2 GIA(弹性) 2 – 32C 2 – 128G 40 – 700G 3 – 30Mbps 无限 48 元/月起 点我购买

日本VPS

日本服务器介绍
电信去程163,回程CN2,移动联通双程骨干直连,宽带质量优秀。

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
日本CN2(弹性) 1 – 16C 1 – 16G 20-200G 5 – 20Mbps 不限流量 46 元/月起 点我购买
日本CN2大带宽(弹性) 1 – 16C 1 – 16G 20-200G 20 – 50Mbps 500G/月 55 元/月起 点我购买

韩国VPS

韩国服务器介绍
韩国CN2优化线路,大陆访问快速响应,电信CN2
线路,带宽质量优秀

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
韩国CN2(弹性) 1 – 32C 1 – 128G 20 – 100G 3 – 20Mbps 看需求 ¥ 35.00 起/ 月 点我购买
韩国CN2大带宽(弹性) 1 – 32C 1 – 128G 20 – 100G 20 – 50Mbps 300G/月起 38 元/月起 点我购买

美国VPS

美国T级防御云服务器介绍
去程普通线路,回程CN2/9929线路,大陆防御值为200G,超过峰值解封快。

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
美国T级防御(弹性) 1 – 16C 1 – 16G 20 – 100G 20 – 300Mbps 不限流 40 元/月起 点我购买
美国高防(弹性) 1 – 16C 1 – 16G 20 – 200G 10 – 30Mbps 不限流 58 元/月起 点我购买
美国高防大带宽(弹性) 1 – 16G 1 – 16G 20 – 200G 20 – 50Mbps 500G/月 56 元/月起 点我购买

2)本项目的github
https://github.com/kekingcn/kkFileView
3)本项目官网
https://kkview.cn/zh-cn/index.html

4)参考资料主要是官网

一、Docker环境部署

在vps安装docker和docker-compose
Docker官方安装文档(英文)
https://duan.yyzq.eu.org/docker-001
Docker-Compose官方安装文档(英文)
https://duan.yyzq.eu.org/docker-002
Centos安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//03
Ubuntu安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//04

docker安装脚本

bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)

docker-compose安装脚本

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

二、创建docker-compose.yml文件

mkdir kkfileview;cd kkfileview #创建一个目录,并进入此目录
vim docker-compose.yml
version: '3.3'  # 这是一个Docker Compose文件的版本声明,它表明该文件符合Docker Compose文件格式版本3.3
services:
    kkfileview:   #服务名,可以自定义
        container_name: kkfileview    #容器名,可以自定义
        ports:
            - '8012:8012'   # 冒号:左边的8012可以改成任意vps上未使用过的端口,冒号右边是本docker镜像里的端口
        environment:
            - PUID=0    # 用户ID,在终端输入id可以查看当前用户的id
            - PGID=0    # 组ID同上
            - TZ=Asia/Shanghai  #时区,可以自定义
        restart: always    #开启自启动其他选项看以下备注
        image: zuokaiqi/kkfileview:latest   #镜像名一般都是使用的哪个镜像就写哪个镜像。
        volumes:
            - ./demo:/opt/kkFileView-4.4.0-beta/file/demo  # 映射本地目录到容器demo目录

三、执行容器运行命令

docker-compose up -d #运行容器
docker-compose ps  #查看是否开启成功

正常启动如下所示

docker-compose ps
   Name                  Command               State                    Ports                  
-----------------------------------------------------------------------------------------------
ywsj_kkfile   java -Dfile.encoding=UTF-8 ...   Up      0.0.0.0:8012->8012/tcp,:::8012->8012/tcp

飞牛NAS搭建

image-1737458821676
目录映射说明
image-1737459069450

四、打开web页面使用

成功以后需要打开自己相应的端口(8012)防火墙就可以web端访问了

http://ip:8012   #打开自己VPS的端口加ip进入web页面

五、绑定域名

绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch
绑定完域名就可以用域名来访问了

六、添加认证信息

默认这个项目是没有认证信息的如果需要的可以看如下方法

可以使用飞牛云上的lucky应用添加
image-1737462659447
web服务这里添加用户名密码即可
image-1737462599140

注意事项

使用过程中
可能遇到的问题
官网上基本都有自己可以找下
1.API接口调用见官网
2.配置说明见官网
3.常见问题见官网
Q:怎么把这个项目集成到我的项目里
A:不需要集成,本项目只需要独立部署,向外提供http预览服务(外部系统只需要访问本项目预览接口并传入需要预览文件的url,就可以打开预览页面)

Q:怎么把这个项目放Tomcat里运行
A:不需要放进Tomcat里,编译好的发行包为zip包,直接解压运行一键启动脚本就可以完成部署(需要有java环境)具体部署步骤详见:部署指南

Q:预览并发问题&预览首次打开慢
A:可使用预览转码队列,将需要预览的文件url放入队列中,提前进行转码,本地访问接口为:http://127.0.0.1:8012/addTask?url=http://xxx/test.txt (url参数为需要需要的文件访问地址)

Q:预览乱码
A:乱码问题可能有如下两个原因

字体问题
大部分Linux系统上并没有预装中文字体或字体不全,需要把常用字体拷贝到Linux服务器上,具体操作如下: 下载如下字体包 https://kkview.cn/resource/fonts.zip 文件解压完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效

Q:Linux下启动项目后日志报错:org.artofsolving.jodconverter.office.OfficeException: office process died with exit code 127
A:操作系统缺少libXext.so.6包,请自行下载安装:https://pkgs.org/download/libXext.so.6

Q:启动项目后日志报错:java.lang.IllegalStateException: a process with acceptString ‘socket,host=127.0.0.1,port=8100’ is already running; pid 26468
A:有正在运行的openoffice进程,kill掉相关进程再重新启动

Q:Windows系统下启动报错:Error creating bean with name ‘cacheServiceRocksDBImpl’
A:本项目默认使用内嵌RocksDB存储引擎作缓存,需要以管理员身份运行,或配置使用其他缓存实现,详见:缓存配置

Q:如何水印文本内容动态传值
A:在预览url后面加上参数&watermarkTxt即可
例如:

var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url=' + encodeURIComponent(url) + '&watermarkTxt=' + encodeURIComponent('动态水印'));

Q:使用nginx代理时预览出现异常
A:一般是nginx和kkFileView配置有问题
例如nginx的访问地址为 https://file.keking.cn 想要使用 https://file.keking.cn/preview/来做预览,kkFileView部署在内网192.168.1.233服务器上,需要在nginx中添加反向代理如下:


location /preview {
    proxy_pass 192.168.1.233:8012;
}

修改kkFileView的配置文件如下两项

server.servlet.context-path = /preview
base.url = https://file.keking.cn/preview

使用如下地址来访问预览页面


<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>

var url = 'https://file.keking.cn/file/test.txt'; //要预览文件的访问地址
window.open('https://file.keking.cn/preview/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));

Q:使用docker部署时如何指定配置文件中的配置项
A:针对docker运行的用户,所有配置项可以使用设置相应的环境变量来配置
环境变量的KEY为配置文件中每个配置项后${}中的KEY
例如,使用docker运行要指定base.url为http://file.keking.cn,docker运行命令如下

docker run -it -d -p 8012:8012 -e KK_BASE_URL="http://file.keking.cn" keking/kkfileview:v2.2.1

Q:使用内网预览时没有问题,但是使用外网预览有问题
A:一般是公司网络使用的路由器不支持或没开启域内NAT,kkFileView无法通过外网地址下载要预览的文件
例如kkFileView部署在公司192.168.1.233服务器上,本地访问http://192.168.1.233:8012可以正常预览
公司运维把192.168.1.233的8012端口暴露到公网ip或域名(http://xxx.xxx.xxx:8012),公网打首页也正常,但是预览就出错
这种一般是因为公司主路由器不支持或没开启域内NAT 参考资料

有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我

4

评论区