Metadata-Version: 2.4
Name: vsdx-wzq
Version: 0.2.0
Summary: SVG 矢量图一键转换为 Visio VSDX 原生可编辑文件，并自动同步为 WorkBuddy 技能（svg-vsdx）
Author-email: 吴振谦 <wuzhenqian@nbu.edu.cn>
License: MIT License
        
        Copyright (c) 2026 吴振谦 (Wu Zhenqian) <wuzhenqian@nbu.edu.cn>
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Keywords: visio,vsdx,svg,workbuddy,skill,converter,矢量图
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Win32 (MS Windows)
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: lxml<7,>=5.0
Requires-Dist: pywin32>=311; sys_platform == "win32"
Dynamic: license-file

# vsdx-wzq

SVG 矢量图 → Microsoft Visio VSDX 原生可编辑文件转换器（附 WorkBuddy 技能 `svg-vsdx` 自动同步）。

**作者：吴振谦**　邮箱：wuzhenqian@nbu.edu.cn　QQ：38328063

---

## 一、功能介绍

- **SVG → VSDX 批量转换**：把 `.svg` 矢量图转换为原生可编辑的 Visio `.vsdx` 文件，支持单文件、目录（递归）、ZIP 压缩包三种输入。
- **原生可编辑对象**：矩形/椭圆变成 Visio 原生 2-D 形状，线条/箭头变成原生 1-D 连接线（箭头为 Visio 自带 EndArrow），框内文字写入 Shape.Text——选中即可编辑，不是图片。
- **教科书排版（textbook-16k-12cm 默认）**：页面宽 120 mm（16 开），字号随版面缩放（Word 插入 11 cm 时正文约 5 号字），框内文字自动防溢出。
- **四色规范配色（启发式）**：所有框的填充/线色收敛为灰、深灰、深蓝、淡蓝四种；**线色按原描边色启发式映射**（蓝系描边 → 深蓝，其余 → 深灰），同级并排框填充自动间隔交替，重点框用深蓝凸显；文字全黑，中文宋体、英文数字 Times New Roman（罗马体）。
- **嵌套/悬浮文字正确归属**：文字自动合并进所属小框的 Shape.Text，悬浮标注独立保留。
- **WorkBuddy 技能自动同步**：`pip install` 后自动把本包内置的技能（`svg-vsdx`）同步到 WorkBuddy 技能目录，开箱即用。

## 二、环境要求

| 项 | 要求 |
|---|---|
| 操作系统 | Windows（转换功能依赖桌面版 Microsoft Visio） |
| Python | 3.9 及以上 |
| 依赖 | `lxml`、`pywin32`（pip 安装时自动安装，无需手动处理） |
| 非 Windows 系统 | 可以安装本包，但转换功能运行时会提示需要 Windows |

## 三、安装

```bash
pip install vsdx-wzq
```

安装后 **无需任何额外操作**：本包会在你下一次运行任意 Python 命令时，自动把技能 `svg-vsdx` 同步到 `~/.workbuddy/skills/svg-vsdx/`（首次安装才执行，不会覆盖你对技能的后续修改）。

## 四、命令行用法（CLI）

```bash
# 转换单个 SVG
svg2vsdx 图1.svg -o 输出目录

# 转换整个目录（递归收集 *.svg），不生成 PNG 预览、不打 zip
svg2vsdx 图片目录/ -o 输出目录 --no-preview --no-zip

# 转换 zip 压缩包
svg2vsdx 图片包.zip -o 输出目录

# 手动同步技能到 WorkBuddy（一般不需要，自动同步已覆盖）
svg2vsdx sync-skill
# 强制覆盖已安装技能（升级技能文件时用）
svg2vsdx sync-skill --force

# 帮助与版本
svg2vsdx --help
svg2vsdx --version
```

常用转换选项：

| 选项 | 说明 |
|---|---|
| `-o, --output-dir` | 输出目录（默认 `svg-to-vsdx-output`） |
| `--profile textbook-16k-12cm` | 教科书 120 mm 版面（默认） |
| `--page-width-mm 100` | 自定义成品宽度（毫米） |
| `--no-preview` | 跳过 PNG 预览导出 |
| `--no-zip` | 跳过批量 ZIP 打包 |
| `--visible` | 转换时显示 Visio 窗口 |
| `--draw-delay <秒>` | 可见模式下每画一个元素停顿的秒数（默认 0.05） |
| `--live-preview` | **实时可视化**：自动打开浏览器预览页，随绘制过程逐步显示图形（Export 快照自动刷新，无需 GUI 依赖） |
| `--preview-hold <秒>` | 实时预览页在转换完成后保持的秒数（默认 2，0 = 一直保持到手动关闭） |
| `--strict` | 遇到不支持的 SVG 特性即报错 |

批量转换会在输出目录生成 `conversion-report.json`（每张图的形状/连接线/文字统计与警告）。

## 五、在 WorkBuddy 里的用法

1. `pip install vsdx-wzq`（自动同步技能，或手动执行一次 `svg2vsdx sync-skill`）；
2. 在 WorkBuddy 对话中直接引用技能，例如：
   - `@svg-vsdx 把 C:\图片\图1.svg 转成 vsdx`
   - `@svg-vsdx 把 C:\图片目录\ 下所有 svg 批量转成 vsdx，不需要 png 预览`
3. WorkBuddy 会读取 `~/.workbuddy/skills/svg-vsdx/` 下的技能说明自动完成转换。

> 提示：技能同步位置可通过环境变量 `WORKBUDDY_SKILLS_DIR` 指定其他 WorkBuddy 技能目录（默认 `~/.workbuddy/skills/`）。

## 六、常见问题

- **转换报错「需要 Windows / Visio」？** 转换必须在装有桌面版 Microsoft Visio 的 Windows 机器上运行；WorkBuddy 中执行时需允许桌面 COM 授权（不要在受限沙箱里跑）。
- **技能没生效？** 确认 `~/.workbuddy/skills/svg-vsdx/SKILL.md` 存在（`svg2vsdx sync-skill` 可手动补装）；然后重启 WorkBuddy 或新开对话。
- **技能被我改坏了/想升级？** 执行 `svg2vsdx sync-skill --force` 从包内恢复官方版本。
- **如何升级插件？** `pip install -U vsdx-wzq`，然后 `svg2vsdx sync-skill --force` 同步新技能。

## 七、许可

MIT License，© 2026 吴振谦（wuzhenqian@nbu.edu.cn）
