# DESIGN.md — 标签设计与模版

## 正式打印路径

1. 模版内容保存在 `api-config.json` → `Templates[]`
2. 类型：`json`（推荐，schemaVersion=1）或 `text`
3. 通道绑定 `TemplateId` 后，`POST /api/print/{channel}` 渲染出纸
4. **不**调用 Label Matrix 引擎执行 `.qdf`

## JSON 模版摘要

```json
{
  "schemaVersion": 1,
  "widthMm": 50,
  "heightMm": 30,
  "elements": [
    { "type": "text", "xMm": 2, "yMm": 2, "widthMm": 40, "heightMm": 5,
      "value": "{{品名}}", "fontSizePt": 10 }
  ],
  "sampleData": { "品名": "示例" }
}
```

常用元素：`text` / `barcode` / `qr` / `rect` / `line` / `image` / `table` / `repeat`  
占位符：`{{字段}}`，允许中文；空白会被 trim。

## 与 LABEL MATRIX / QDF

| 能力 | 现状 |
|------|------|
| 探测 QDF 字段 | `QdfFieldProbe` |
| 一键导入古法标签 | 生成 JSON 模版 + 别名 |
| 内嵌 LM 设计器 EXE | **不做**（HASP / 无设计器 API） |
| OLE 嵌 LM | **不做** |

路径：QDF 探测 → JSON → 自研设计器 / GDI。

## 双设计器

### 桌面 WPF

- `TemplateDesignerWindow` + `TemplateDesignerCanvas`
- 点选/拖拽/方向键、字体族、图层上移下移
- 可带通道打印机上下文试打

### 网页 designer.html

- 仓库：`web/print-component/dev/designer.html`
- 宿主内置：`src/PrintComponent/www/designer.html`（Content 复制到输出）
- 本机打开：`http://127.0.0.1:{port}/designer?token=...&channel=...`（优先，免 CORS）
- 线上：`https://py99999.com/print-component/dev/designer.html`（需 `AllowCorsAll`）
- 同源时 `apiBase` 默认可为 `location.origin`

能力要点：选通道、按机预览、保存绑当前通道、另存副本再绑、PATCH 通道、试打。

## 纸张与画布

- Profile `PaperWidthMm/HeightMm` 应与模版 `widthMm/heightMm` 一致
- 通道换模版：可提示同步纸张
- 一键自检：「同步纸张」调用 `BindingDiagnostics.SyncPaperFromTemplates`

## 多机差异

不要复制整库；用通道「另存专用」得到 `原Id-打印机slug`，只改该副本。
