news 2026/9/12 16:13:28

kkFileView CAD图纸在线预览实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
kkFileView CAD图纸在线预览实践

kkFileView CAD图纸在线预览实践

【免费下载链接】kkFileViewUniversal File Online Preview Project based on Spring-Boot项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileView

当工程团队要在浏览器里评审一张 DWG 图纸时,逐份打开 CAD 客户端核对既慢,又给服务器装商业软件不现实。kkFileView 是基于 Spring Boot 的文件在线预览项目,把 CAD 文件接收后异步转换成 SVG、PDF 或 TIFF,再直接在浏览器里渲染出来。

📐 从 URL 参数到预览页:一条 CAD 请求的完整链路

预览入口是一个带url参数的在线预览请求,服务端先用 FileAttribute.java 把文件名、后缀、源地址、officePreviewType(image / allImages / pdf)等参数打包成一个请求上下文对象。后缀落在FileType.CAD的清单里(dwg、dxf、dwf、iges、igs、dwt、dng、ifc、dwfx、stl、cf2、plt)时,FilePreviewFactory通过 Spring 容器把请求路由到CadFilePreviewImpl

这一步跑通了,后面就顺了:请求不用关心文件在本地还是远端,CadFilePreviewImpl统一先用DownloadUtils把源文件拉到本地临时目录,拿到真实路径后才进入转换逻辑。

⚙️ CadToPdfService 内部:从 DWG 二进制到 SVG / PDF / TIFF

CadFilePreviewImpl.java 本身不做重活,它只负责三件事:查缓存(转换过的文件直接渲染)、没命中就发起异步转换并返回一个"文件正在转换中"的等待页、转换完成后由回调把结果登记进缓存表。

真正的转换在CadToPdfService里完成,核心流程是:信号量限流(并发数由cad.thread控制)→Image.load加载 CAD 文件(编码固定为简体中文)→ 按cad.preview.type配置生成SvgOptionsPdfOptionsTiffOptions→ 写入输出文件。整个过程通过CompletableFuture异步执行,超时由cad.timeout控制,超时任务会被取消并清理残留产物。转换进度会实时更新到状态管理器,等待页轮询的就是这份进度。

🚀 跑通它:从 clone 到第一张图纸预览

本地启动只需 Java 17 环境(详见项目文档的版本要求),拉下代码直接运行主类:

git clone https://gitcode.com/GitHub_Trending/kk/kkFileView cd kkFileView/server mvn spring-boot:run

启动后访问http://localhost:8012/,把一份 dwg 文件拖进去,或直接拼在线预览链接,例如:

http://localhost:8012/onlinePreview?url=http://localhost:8012/files/你的图纸.dwg&type=dwg

首次请求会先看到转换等待页,几秒到几十秒后(取决于图纸复杂度)跳转到预览页:默认svg模式下是一整张矢量图纸,可无限缩放;换成pdf模式则是可翻页的 PDF。这一步跑通后,把预览页 URL 直接嵌进 OA 或 PLM 页面就能用了。

🔧 往深里调:两个关键配置和一个扩展入口

application.properties 里与 CAD 最相关的是两项。cad.preview.type决定输出形态(svg / pdf / tif),影响浏览器端的渲染方式;cad.conversionmodule决定转换引擎——1是内置的 aspose-cad,支持格式最多但比较吃服务器资源;2是外部 cadviewer 进程,需要按操作系统下载转换包并放置中文字体到cad.cadconverterpath指定的目录。并发和超时分别由cad.threadcad.timeout调整。

扩展入口是FilePreview接口:每种文件类型对应一个实现类,走FileTypegetInstanceName()→ Spring Bean 的路由。想自定义 CAD 后处理(比如输出后改图、加水印逻辑),照CadFilePreviewImpl的骨架复制一份、改 Bean 名即可,不需要动主流程。

🏭 谁在什么情况下用

设计协同场景里,甲方或业主不一定装 CAD,把图纸预览链接贴进评审系统,双方看同一张图,避免"我这边字体不对"这类扯皮。档案与文档系统里,kkFileView 常被嵌在 OA、PLM 后面当渲染服务,历史 DWG/DXF 图纸入库后无需原样打开即可在线调阅,stl、dxf 这类交换格式也能一并覆盖。

⚠️ 用之前要知道的事

第一,它输出的是可渲染的图纸画面,不是结构化的尺寸、公差或材料参数——别拿它当 CAD 数据解析器用,要读图层实体得自己解析 DXF。第二,aspose-cad 引擎转换大图纸时 CPU 占用高,默认并发 5、超时 90 秒,超大的装配图建议调大cad.timeout或切到 cadviewer 模块。第三,外部 cadviewer 模块依赖字体包,缺字体会导致中文标注乱码,部署时别漏掉字体目录。

一句话收束:需要"浏览器里快速看图"选 kkFileView 合适;需要"从图纸里抠结构化参数",它目前只负责到渲染这一步。

【免费下载链接】kkFileViewUniversal File Online Preview Project based on Spring-Boot项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileView

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 16:13:11

Gemini 3 Pro与GPT-5.2大模型架构与工程实践对比

1. 大模型技术演进现状 2024年大模型技术进入深水区,Gemini 3 Pro与GPT-5.2作为两大技术阵营的代表作,在代码生成、Agent系统和产品级应用三个维度展现出截然不同的技术特性。作为同时使用过两大平台的一线开发者,我将从架构设计、性能表现和…

作者头像 李华
网站建设 2026/9/12 16:12:17

go2rtc 低延迟流媒体:从摄像头到 WebRTC

go2rtc 低延迟流媒体:从摄像头到 WebRTC 【免费下载链接】go2rtc Ultimate camera streaming application 项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc go2rtc 是一个零依赖、跨平台的流媒体应用,能从几十种摄像头协议拉流&#xf…

作者头像 李华
网站建设 2026/9/12 16:10:44

物流成本控制必读:数据分析从Excel到SQL的实战进阶指南

上个月的月度成本复盘会,经理指着投影问了一句:“这个月运输成本环比涨了6.8%,谁能告诉我是涨在哪了?”会议室安静了十几秒。会后我盯着Excel里的运费明细翻到凌晨,最后只能说一句“可能跟油价和旺季有关系”&#xff…

作者头像 李华
网站建设 2026/9/12 16:10:21

老Mac安装最新macOS:OpenCore Legacy Patcher免费完整指南

老Mac安装最新macOS:OpenCore Legacy Patcher免费完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你的Intel Mac系统版本已经停在官方…

作者头像 李华