kkFileView 部署和安装

介绍

文档在线预览项目解决方案,项目使用流行的 spring boot 搭建,易上手和部署。万能的文件预览开源项目,基本支持主流文档格式预览,如:

  1. 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx,xlam, xla ,pages 等 Office 办公文档
  2. 支持 wps, dps, et, ett, wpt 等国产 WPS Office 办公文档
  3. 支持 odt, ods, ots, odp, otp, six, ott, fodt, fods 等 OpenOffice、LibreOffice 办公文档
  4. 支持 vsd, vsdx 等 Visio 流程图文件
  5. 支持 wmf, emf 等 Windows 系统图像文件
  6. 支持 psd ,eps 等 Photoshop 软件模型文件
  7. 支持 pdf ,ofd, rtf 等文档
  8. 支持 xmind 软件模型文件
  9. 支持 bpmn 工作流文件
  10. 支持 eml 邮件文件
  11. 支持 epub 图书文档
  12. 支持 obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim 等 3D 模型文件
  13. 支持 dwg, dxf, dwf, iges , igs, dwt, dng, ifc, dwfx, stl, cf2, plt 等 CAD 模型文件
  14. 支持 txt, xml(渲染), xbrl(渲染), md(渲染), java, php, py, js, css 等所有纯文本
  15. 支持 zip, rar, jar, tar, gzip, 7z 等压缩包
  16. 支持 jpg, jpeg, png, gif, bmp, ico, jfif, webp 等图片预览(翻转,缩放,镜像)
  17. 支持 tif, tiff 图信息模型文件
  18. 支持 tga 图像格式文件
  19. 支持 svg 矢量图像格式文件
  20. 支持 mp3,wav,mp4,flv 等音视频格式文件
  21. 支持 avi,mov,rm,webm,ts,rm,mkv,mpeg,ogg,mpg,rmvb,wmv,3gp,ts,swf 等视频格式转码预览
  22. 支持 dcm 等医疗数位影像预览
  23. 支持 drawio 绘图预览

基于当前良好的架构模式,支持的文件类型在进一步丰富中

项目特性

  • 使用 spring-boot 开发,预览服务搭建部署非常简便
  • rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便
  • 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持
  • 最最重要 Apache 协议开源,代码 pull 下来想干嘛就干嘛

官网及文档

地址:https://kkview.cn

在线体验

请善待公共服务,会不定时停用

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

项目文档(Project documentation)

  1. 详细使用文档:https://kkview.cn/zh-cn/docs/home.html

下载源码

Github:https://github.com/kekingcn/kkFileView

克隆项目

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

构建说明

由于 kkfileview 的基础运行环境很少变动且制作耗时较久,而 kkfileview 本身代码开发会频繁改动,因此把制作其 Docker 镜像的步骤拆分为两次: 首先制作 kkfileview 的基础镜像(kkfileview-base)。 然后使用 kkfileview-base 作为基础镜像进行构建,加快 kkfileview docker 镜像构建与发布。

跨平台构建

docker buildx 支持在一台机器上构建出多种平台架构的镜像。推荐使用该能力进行跨平台的镜像构建。
例如,执行 docker buildx build 命令时加上 --platform=linux/arm64 参数即可构建出 arm64 架构镜像。这极大方便了那些没有 arm64 架构机器却想构建 arm64 架构镜像的用户。

当前本项目仅支持构建 linux/amd64 和 linux/arm64 两种平台架构的镜像
buildx 的 builder driver 可以使用默认的 docker 类型, 若使用 docker-container 类型可以支持并行构建多种架构, 本文不再赘述, 有兴趣可以自行了解。参考 Docker Buildx | Docker Documentation

前提要求

以当前机器为 amd64 (x86_64)架构为例。需要开启 docker 的 buildx 特性,以及开启 Linux 的 QEMU 用户模式:

使用 WSL2 的 Windows 用户如果安装了最新的 DockerDesktop, 则这些前提要求已满足, 无需额外下述设置。

  1. 安装 docker buildx 客户端插件:

    docker 版本要求 >=19.03

    若已安装, 则跳过。详情参考 https://github.com/docker/buildx

  2. 开启 QEMU 的用户模式功能, 并安装其它平台的模拟器:

    Linux 内核要求 >=4.8

    使用 tonistiigi/binfmt 镜像可快速开启并安装模拟器,执行下面命令:

    docker run --privileged --rm tonistiigi/binfmt --install all

现在就可以愉快地开始构建了,构建命令示例:

docker buildx build --platform=linux/amd64,linux/arm64 -t keking/kkfileview-base:4.4.0 --push .

开始构建

1.构建 kkfileview-base

cd 你克隆文件夹/file-online-preview/docker/kkfileview-base #执行如下,等待构建kkfileview-base docker buildx build --platform=linux/amd64 -t keking/kkfileview-base:4.4.0 --push .

2.开始构建 kkfileview

cd 你克隆文件夹/file-online-preview #编译打包 mvn clean package -DskipTests -Prelease #执行如下开始构建 kkfileview docker build -t keking/kkfileview .

3.启动容器

docker run -it -d --privileged=true --name="kkFileView" -e KK_BASE_URL="你的外部访问地址" -e KK_CONTEXT_PATH="/你的访问前缀" keking/kkfileview:latest

4.代码访问

1.Java
/** * 访问预览地址 **/ @RestController @RequestMapping("/preview") public class KkFileViewController { @Autowired private RestTemplate restTemplate; //访问的地址 final String URL = "http://192.168.199.105:9000/test/test-upload.pdf"; // kkFileView的启动地址,这里是以上面启动的默认为例 final String BASE_URL = "http://127.0.0.1:8012/"; /** * 获取预览地址 **/ @RequestMapping("/get") public String get() { return BASE_URL+"onlinePreview?url="+Base64.encodeBase64String(URL.getBytes()); } /** * 提前解析文件 **/ @RequestMapping("/addTask") public String addTask() { String response = restTemplate.getForObject(BASE_URL+"addTask?url="+Base64.encodeBase64String(URL.getBytes()), String.class); return response; } }

2.JS

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script> var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址 window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
  • kkFileView
    2 引用
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖 • 2 关注
1 操作
adongs 在 2025-04-14 12:33:15 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...