介绍
文档在线预览项目解决方案,项目使用流行的 spring boot 搭建,易上手和部署。万能的文件预览开源项目,基本支持主流文档格式预览,如:
- 支持 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 绘图预览
基于当前良好的架构模式,支持的文件类型在进一步丰富中
项目特性
- 使用 spring-boot 开发,预览服务搭建部署非常简便
- rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便
- 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持
- 最最重要 Apache 协议开源,代码 pull 下来想干嘛就干嘛
官网及文档
在线体验
请善待公共服务,会不定时停用
项目文档(Project documentation)
下载源码
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, 则这些前提要求已满足, 无需额外下述设置。
-
安装 docker buildx 客户端插件:
docker 版本要求 >=19.03
若已安装, 则跳过。详情参考 https://github.com/docker/buildx
-
开启 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)));
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于