kkFileView
简介
在线文档预览项目解决方案,使用流行的Spring Boot框架构建,易于设置和部署。这个多功能开源项目为广泛的文档格式提供基本支持,包括:
- 支持Office文档如
doc
、docx
、xls
、xlsx
、xlsm
、ppt
、pptx
、csv
、tsv
、dotm
、xlt
、xltm
、dot
、xlam
、dotx
、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
等软件模型文件。 - 支持
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
(渲染)、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
、wmv
、mkv
、3gp
和rm
等多种音视频格式文件。 - 支持
dcm
。 - 支持
drawio
。
特性
- 使用流行的Spring Boot框架构建
- 易于构建和部署
- 基本支持主流办公文档的在线预览,如Doc、docx、Excel、PDF、TXT、zip、rar、图片等
- REST API
- 抽象文件预览接口,便于扩展更多文件扩展名并自行开发此项目
官方网站和文档
在线演示
请善待公共服务,否则随时可能停止。
联系我们
我们将认真回答您的问题,并解决您在使用项目过程中遇到的任何问题。我们也恳请您在提问之前至少先Google或百度一下,以节省时间并避免无效沟通。让我们珍惜生命,远离无效沟通。
快速开始
技术栈
- Spring boot:Spring Boot开发参考指南
- Freemarker
- Redisson
- Jodconverter
依赖
- Redis(可选,默认不需要)
- OpenOffice或LibreOffice(Windows上已集成,Linux上会自动安装,Mac OS需手动安装)
-
第一步:
git pull https://github.com/kekingcn/kkFileView.git
-
第二步:运行
/server/src/main/java/cn/keking/ServerMain.java
的main方法。启动后,访问http://localhost:8012/
。
更新日志
2022年12月14日,4.1.0版本发布:
- 更新了首页设计,由@wsd7747贡献。
- 兼容多页tif的pdf和jpg转换以及tif图片预览多页在线预览,由@zhangzhen1979贡献。
- 优化了docker构建,使用分层构建方法,由@yl-yue贡献。
- 实现了基于userToken缓存的文件加密,由@yl-yue贡献。
- 实现了加密Word、PPT和Excel文件的预览,由@yl-yue贡献。
- 升级Linux和Docker镜像到LibreOffice 7.3。
- 更新了OFD预览组件、tif预览组件,并增加了PPT水印支持。
- 其他多项升级、优化和bug修复。 我们感谢@yl-yue、@wsd7747、@zhangzhen1979、@tomhusky、@shenghuadun和@kischn.sun的代码贡献。
2021年7月6日,4.0.0版本发布:
- 底层系统集成的OpenOffice已替换为LibreOffice,提高了Office文件的兼容性和预览效果。
- 修复了压缩文件中的目录遍历漏洞。
- 修复了PDF模式下预览PPT文件无效的问题。
- 修复了PPT文件图片预览模式下前端显示异常的问题。
- 新增功能:可通过配置实时启用或禁用首页的文件上传功能。
- 优化了Office进程关闭的日志记录。
- 优化了Windows环境下查找Office组件的逻辑,优先使用内置LibreOffice。
- 优化了启动Office进程的同步执行。
2021年6月17日,3.6.0版本发布:
本版本包括对OFD文件类型版本的支持,此次发布中所有重要功能均由社区贡献。我们感谢@gaoxingzaq和@zhangxiaoxiao9527的代码贡献。
- 新增对OFD类型文件的预览支持。OFD是一种类似PDF的国产文件格式。
- 新增通过ffmpeg转码和预览视频文件的支持。启用转码后,理论上支持预览所有主流视频文件格式,如RM、RMVB、FLV等。
- 美化了PPT和PPTX文件类型的预览效果,比上一版本看起来好多了。
- 更新了pdfbox、xstream、common-io等依赖的版本。
2021年1月28日:
2020农历新年的最后一次更新已发布,主要包括一些UI改进、修复QQ群用户报告的bug和问题,最重要的是,这是迎接新年的新版本。
- 引入 galimatias 解决非标准文件名导致的异常文件下载问题。
- 更新了索引访问演示界面的 UI 样式。
- 更新了 markdown 文件预览的 UI 样式。
- 更新了 XML 文件预览的 UI 样式,调整了文本文件预览的架构以便于扩展。
- 更新了 simTxT 文件预览的 UI 样式。
- 调整了多图连续预览的 UI,改为上下翻页。
- 采用 apache-common-io 包简化了所有文件下载 IO 操作。
- XML 文件预览支持切换到纯文本模式。
- 增强了 url base64 解码失败时的提示信息。
- 修复了导入错误和图片预览 bug。
- 修复了运行发布包时缺少日志目录的问题。
- 修复了压缩包中多图连续预览的 bug。
- 修复了文件类型后缀大小写不通用匹配的问题。
- 指定使用 Apache Commons-code 实现进行 Base64 编码,解决某些 JDK 版本出现异常的问题。
- 修复了类文本文件 HTML 文件预览的 bug。
- 修复了预览 dwg 文件时无法在 jpg 和 pdf 之间切换的问题。
- 对危险字符进行转义,防止反射型 xss。
- 修复了重复编码导致文档转图片预览失败的问题,并规范了编码。
2020年12月27日:
2020年末重大更新,包括全面的架构设计、完整的代码重构、代码质量显著提升,更方便进行二次开发。欢迎大家审阅源码,提 issues 和 pull requests 参与建设。
- 调整架构模块,大幅重构代码,代码质量提升数个档次,欢迎审阅。
- 增强 XML 文件预览效果,新增 XML 文档结构预览。
- 新增 markdown 文件预览支持,包括 md 渲染和源文本与预览切换支持。
- 底层 web 服务器切换为 jetty,解决问题:https://github.com/kekingcn/kkFileView/issues/168
- 引入 cpdetector 解决文件编码识别问题。
- 采用 base64 和 urlencode 双重编码 URL,彻底解决奇葩文件名预览问题。
- 新增配置项 office.preview.switch.disabled 控制 office 文件预览开关。
- 优化文本文件预览逻辑,通过 Base64 传输内容,避免预览时再次请求文件内容。
- 关闭 office 预览模式下的图片缩放效果,实现与图片、pdf 预览一致的体验。
- 直接设置 pdfbox 兼容低版本 JDK,在 IDEA 中运行也不会有警告提示。
- 移除非必要工具包如 Guava、Hutool,减小代码体积。
- Office 组件异步加载,加快应用启动速度至5秒内。
- 合理设置预览消费队列的线程数。
- 修复压缩包内的文件再次预览失败的 bug。
- 修复图片预览的 bug。
2020年5月20日:
- 支持全局水印和通过参数动态改变水印内容
- 支持 CAD 文件预览
- 新增配置项 base.url,支持使用 nginx 反向代理和设置 context-path
- 所有配置项支持从环境变量中读取,方便 docker 镜像部署和集群中大规模使用
- 支持配置信任站点(只允许预览来自信任站点的文件源),保护预览服务不被滥用
- 支持配置自定义缓存清理时间(cron 表达式)
- 所有类型的文本可直接预览,无需下载,如 .md .java .py 等
- 支持配置限制 PDF 文件转换后下载
- 优化 Maven 打包配置,解决 .sh 脚本换行问题
- 将前端所有 CDN 依赖放到本地,方便没有外网连接的用户使用
- 首页注释由搜狐畅言切换为 gitalk
- 修复 URL 中包含特殊字符可能导致的预览异常
- 修复转换文件队列addtask异常
- 修复其他已知问题
- 官网建设:https://kkview.cn
- 官方 docker 镜像仓库建设:https://hub.docker.com/r/keking/kkfileview
2019年6月18日:
- 支持自动清理缓存及预览文件
- 支持 http/https 流式 url 文件预览
- 支持 FTP url 文件预览
- 新增 Docker 构建
2019年4月8日:
- 缓存及队列实现抽象,提供 JDK 和 REDIS 两种实现(REDIS 成为可选依赖)
- 提供 zip 包及一键启动脚本,简化部署
2018年1月17日:
- 精简项目目录,抽象文件预览接口,方便扩展更多文件类型预览
- 新增英文文档说明(@幻幻Fate,@汝辉 贡献)
- 支持更多图片文件扩展名预览
- 修复 ZIP 文件预览时图片总是从第一张开始的问题
2018年1月12日:
- 新增多图片同时预览
- 支持压缩包内图片轮番预览
2018年1月2日:
- 修复 txt 等文本编码问题导致的预览乱码
- 修复项目模块依赖引入问题
- 新增 spring boot profile,支持多环境配置
- 引入 pdf.js 预览 doc 等文档类型文件,支持生成 doc 文件目录大纲,支持手机端预览
赞助我们
如果本项目对您有帮助,欢迎赞助。您的支持是我们最大的动力!