窗口标题显示为
DWG2PNG V1.0.0 Design by Alex(标题为既定命名,软件实际功能为 DWG/DXF → PDF 转换)。
一款面向 Windows 的轻量级桌面工具,采用引导式三页向导流程,把 AutoCAD 的 .dwg / .dxf 图纸一键转换为 PDF。转换核心依赖 ODA File Converter(Open Design Alliance 免费引擎),已随程序一同打包,无需用户另行安装。
- 拖拽上传:支持把
.dwg/.dxf文件直接拖入窗口任意位置。 - 文件检测:自动校验文件头、完整性,并用 ODA 引擎实际解析,确认文件合格后再进入下一步。
- 图纸预览:转换前即可预览图纸(默认显示全部图层)。
- 内联进度:转换进度在页面内联显示,不弹窗,完成后以居中淡入淡出的气泡提示。
- 一键保存:转换完成后弹出系统文件对话框保存 PDF;保存成功后「保存 PDF」按钮自动变为「打开文件夹」,一键跳转到文件所在目录。
- 后台隐藏引擎:ODA 转换引擎在后台静默运行,不弹出任何窗口。
- 免安装分发:打包为单个
.exe,拷贝到任意 Windows 电脑即可运行,无需预先安装 ODA。 - 引导式三页流程,每一步状态清晰,降低使用门槛。
┌──────────────┐ 检测通过(自动) ┌──────────────┐ 转换完成(自动) ┌──────────────┐
│ 第 1 页 │ ───────────────▶ │ 第 2 页 │ ───────────────▶ │ 第 3 页 │
│ 上传并检测 │ │ 预览与转换 │ │ 完成并保存 │
└──────────────┘ ◀── 重新上传 ──── └──────────────┘ ◀── 重新上传 ──── └──────────────┘
│ │ │
拖拽/选择文件 [开始转换PDF] [保存 PDF]
检测进度条 [重新上传] 保存后按钮变 [打开文件夹]
合格气泡 ✓ → 自动进入 预览(全部图层) 为[打开文件夹] [重新上传]
- 把
.dwg或.dxf文件拖入窗口,或点击选择文件。 - 程序依次执行:文件头校验 → 完整性校验 → ODA 引擎解析 → 生成预览图。
- 检测完成后出现绿色气泡「✓ 文件合格,即将进入预览…」,约 1.2 秒后自动进入第 2 页。
- 页面展示图纸预览(默认显示全部图层,无冗余的下拉选择)。
- 点击 「开始转换 PDF」,页面内联显示转换进度(不弹窗)。
- 完成后出现气泡提示「✓ 转换完成 · N 页 · 耗时 Xs · Y MB」,约 1.4 秒后自动进入第 3 页。
- 如需更换文件,点击 「重新上传」 返回第 1 页。
- 页面展示转换后的 PDF 多页预览。
- 点击 「保存 PDF」,弹出系统文件对话框,选择路径保存。
- 保存成功后:原「保存 PDF」按钮消失,出现 「打开文件夹」 按钮;点击即可在资源管理器中打开刚刚保存 PDF 的目录。
- 点击 「重新上传」 可重新开始整个流程。
- 从仓库的 Releases(或
dist/目录)下载DWG2PDF.exe。 - 把
DWG2PDF.exe拷贝到任意 Windows 电脑,双击运行即可,无需安装 ODA 或任何依赖。 - 首次启动会解压内置的转换引擎(约 70 MB),因此第一次会稍慢,之后启动会变快。
⚠️ 该.exe为 Windows 专用。在极少数「非常干净」的新电脑上,若系统缺少 Microsoft Visual C++ 运行库,ODA 引擎可能无法启动;普通 Windows 机器通常已自带,无需处理。
- Windows 10 / 11
- Python 3.11+(推荐 3.13)
- ODA File Converter 引擎未纳入 git 仓库(体积与许可原因)。自行构建前,请从本仓库 Releases 下载
oda-engine.zip并解压到tools/oda/目录,或从 ODA 官网 获取。
# 1. 克隆仓库
git clone <your-repo-url>
cd DMG2PDF
# 2. 获取 ODA 引擎(仓库不含该二进制)
# 从本仓库 Releases 下载 oda-engine.zip,解压到 tools/oda/
# 或自行从 https://www.opendesign.com/ 下载 ODAFileConverter 放入 tools/oda/
# 3. 创建并激活虚拟环境(可选但推荐)
python -m venv .venv
.venv\Scripts\activate
# 4. 安装依赖
pip install -r requirements.txt
# 5. 打包为单文件 exe
pyinstaller build.spec --noconfirm
# 6. 产物
# dist/DWG2PDF.exe —— 单文件可执行程序(已内含 ODA 引擎,约 124 MB)打包时
build.spec会把tools/oda/目录作为数据文件一并打进 exe;运行时程序会自动从该临时目录定位并使用 ODA 引擎,无需目标机器安装 ODA。
DMG2PDF/
├── main.py # 三页向导界面(PySide6)
├── dwg_converter.py # 转换核心:DWG/DXF 校验、DWG→DXF、DXF→PDF/预览
├── build.spec # PyInstaller 打包配置(含 ODA 引擎)
├── requirements.txt # Python 依赖
├── app.ico # 程序图标
├── tools/
│ └── oda/ # ODA File Converter 引擎(随包分发,免安装)
└── dist/
└── DWG2PDF.exe # 打包产物(单文件)
转换采用两段式管线,因为 ODA 免费版命令行不直接输出 PDF(仅支持 DXF 等中间格式),故增加 DXF→PDF 一步以获得更可控的多页输出:
DWG / DXF
│ (ODA File Converter CLI, 后台隐藏运行)
▼
DXF
│ (ezdxf 解析布局/实体 + PyMuPDF 绘制)
▼
PDF / 预览 PNG
| 组件 | 职责 |
|---|---|
| ODA File Converter | 免费 CAD 引擎,负责 DWG → DXF(含完整性解析)。以 SW_HIDE + DETACHED_PROCESS 后台静默运行,并剔除会干扰其子进程的 Qt 平台环境变量。 |
| ezdxf | 解析 DXF,提取图纸布局与实体(支持多布局、中文样式回退)。 |
| PyMuPDF (fitz) | 将图纸绘制为 PDF 与预览 PNG。 |
| PySide6 | 三页栈式向导界面、拖拽上传、内联进度、居中淡入淡出气泡提示。 |
Q:为什么是「DWG2PNG」标题,却输出 PDF?
A:窗口标题 DWG2PNG V1.0.0 Design by Alex 为产品既定命名;软件实际功能为 DWG/DXF 转 PDF。如需改标题,修改 main.py 中的 APP_TITLE 常量后重新打包即可。
Q:为什么不能直接 DWG → PDF,而要经过 DXF?
A:ODA File Converter 免费版的命令行 PDF 输出参数在本项目中不可用(会报错),因此采用 DWG → DXF → PDF 两段式管线,转换质量更可控、可输出多页。
Q:换电脑需要重新安装 ODA 吗?
A:不需要。ODA 引擎已随 DWG2PDF.exe 打包,程序运行时自动解压并定位,新电脑免安装即可运行。
Q:首次启动为什么比较慢?
A:单文件 exe 首次启动需把内置的约 70 MB 转换引擎解压到临时目录,属正常现象;之后该目录会被复用,启动变快。若希望避免每次解压,可改用 onedir(目录式)打包。
Q:支持 macOS / Linux 吗?
A:当前 DWG2PDF.exe 为 Windows 原生程序,仅支持 Windows。跨平台需另行在对应系统上打包。
- ODA File Converter — Open Design Alliance,免费 CAD 转换引擎(已随包分发)。
- ezdxf — DXF 解析。
- PyMuPDF — PDF / 图像生成。
- PySide6 — Qt 界面框架。
- PyInstaller — 打包工具。
本项目用于个人 / 学习用途。ODA File Converter 的使用须遵守 Open Design Alliance 的相关许可条款;其余 Python 依赖按其各自开源许可协议执行。