在企业日常办公和业务流程中,大量合同、报表、审批单等文档需要在线查看,但不同格式(Word、Excel、PPT、PDF等)的文件兼容性差,用户往往需要下载后用本地软件打开,操作繁琐且存在文件泄露风险。本项目旨在为企业内部系统提供统一的文档在线预览能力,解决多格式文件无法直接在浏览器中安全预览的问题,同时满足金融等行业对文档访问审计和水印防泄漏的合规要求。
点击空白处退出提示
在企业日常办公和业务流程中,大量合同、报表、审批单等文档需要在线查看,但不同格式(Word、Excel、PPT、PDF等)的文件兼容性差,用户往往需要下载后用本地软件打开,操作繁琐且存在文件泄露风险。本项目旨在为企业内部系统提供统一的文档在线预览能力,解决多格式文件无法直接在浏览器中安全预览的问题,同时满足金融等行业对文档访问审计和水印防泄漏的合规要求。
本项目是一个文档预览微服务,主要包含以下功能模块:一、文档在线预览模块,对接kkFileView引擎,支持Word、Excel、PPT、PDF、图片等多种格式的浏览器端在线预览,提供预览URL生成和页面重定向两种接入方式;二、文档格式转换模块,支持Office文档到PDF的同步和异步转换,提供任务状态查询和取消能力;三、安全认证模块,基于JWT实现接口鉴权,同时支持生成带签名和过期时间的临时预览URL,方便外部系统免登录调用;四、水印防泄漏模块,支持在预览文档上动态叠加自定义水印文字;五、二级缓存模块,采用Caffeine本地缓存加Redis分布式缓存,按文件大小智能分级存储,提升预览响应速度;六、限流与审计模块,基于Redis滑动窗口实现接口限流,同时记录所有预览操作的审计日志,支持分页查询和统计分析。
我负责该微服务的整体架构设计与核心功能开发。项目基于Spring Boot 3.2 + Java 17构建,采用Nacos作为配置中心和服务注册发现,实现配置动态刷新。安全层面使用Spring Security + JWT无状态认证,并设计了临时URL签名机制支持免登录预览场景。缓存方面设计了Caffeine + Redis二级缓存架构,根据文件大小自动选择缓存策略,小文件双写本地和Redis,中等文件仅存Redis,大文件跳过缓存直接流式处理。限流采用Redis Lua脚本实现滑动窗口算法,通过自定义注解实现声明式限流,支持按IP、用户、接口三种维度。监控方面集成Actuator + Prometheus,并自定义了内存、CPU、kkFileView连通性等健康检查指标。审计日志通过AOP切面自动采集,持久化到MySQL并提供查询统计接口。




评论