@worm-vue3-print/core 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -7
- package/dist/browser/index.cjs +3686 -0
- package/dist/browser/index.d.cts +96 -0
- package/dist/browser/index.d.ts +96 -0
- package/dist/browser/index.js +325 -0
- package/dist/chunk-V4A5623C.js +31 -0
- package/dist/chunk-VFEURLAZ.js +3579 -0
- package/dist/designer/index.cjs +2641 -0
- package/dist/designer/index.d.cts +448 -0
- package/dist/designer/index.d.ts +448 -0
- package/dist/designer/index.js +1710 -0
- package/dist/dom-executor.iife.global.js +8 -0
- package/dist/driver-CsWkGK4a.d.cts +932 -0
- package/dist/driver-CsWkGK4a.d.ts +932 -0
- package/dist/index.cjs +1935 -120
- package/dist/index.d.cts +354 -185
- package/dist/index.d.ts +354 -185
- package/dist/index.js +197 -1765
- package/dist/node/index.cjs +41 -0
- package/dist/node/index.d.cts +6 -0
- package/dist/node/index.d.ts +6 -0
- package/dist/node/index.js +10 -0
- package/dist/ports-B63x7kCX.d.ts +102 -0
- package/dist/ports-q934kIC7.d.cts +102 -0
- package/package.json +26 -3
package/README.md
CHANGED
|
@@ -14,10 +14,38 @@ print-core/
|
|
|
14
14
|
css-builder.ts # mm 单位布局 → CSS
|
|
15
15
|
expression-eval.ts # 表达式安全求值(safelist)
|
|
16
16
|
types.ts # 模板/请求类型(JSON 可序列化)
|
|
17
|
+
designer/ # 框架无关的设计器内核(无 Vue/React 依赖)
|
|
18
|
+
types.ts # 设计器完整模板模型(TemplateData/RuntimeElement 等)
|
|
19
|
+
utils/ # 元素工厂/表格矩阵/单位换算/迁移/吸附参考线等通用工具
|
|
20
|
+
interactions/ # 对齐/分组/缩放/键盘/吸附等纯交互逻辑
|
|
21
|
+
browser/ # 渲染管线浏览器适配器(iframe 两遍分页、jsbarcode/qrcode)
|
|
17
22
|
```
|
|
18
23
|
|
|
19
24
|
`core` 无 Vue、无宿主依赖,可在 Node 服务端(`@worm-vue3-print/render`)与浏览器端(`@worm-vue3-print/canvas`)共用,
|
|
20
|
-
|
|
25
|
+
保证「浏览器预览」「服务端 PDF」「桌面客户端出图」共用同一套算法(逻辑同源;像素级一致还需三端字体与 Chromium 内核同源)。
|
|
26
|
+
|
|
27
|
+
### 打印管线(`print/`,纯 TS)
|
|
28
|
+
|
|
29
|
+
- 入口:`prepareDocument(job, runtime)`、`renderPdf(job, runtime)`、`renderScreenshot(job, runtime)`;
|
|
30
|
+
- 规格:`buildPdfTargetSpec`、`toElectronPrintToPdfOptions`(英寸)、`toPlaywrightPdfOptions`(mm)、`buildScreenshotTargetSpec`;
|
|
31
|
+
- 纸张:`resolvePaperMm`(宿主覆盖逃生门)、`paperViewportPx`(测量容器 mm→px)、`escapeHeightMm`(连续纸纸高逃生门);
|
|
32
|
+
- 契约:`PageDriver`(宿主只实现 open/setContent/injectExecutor/evaluate 与可选 pdf/screenshot)+
|
|
33
|
+
`createDomHostRuntime(driverFactory, bundle)`(共享的载入→注入→就绪→执行→释放时序、超时预算与错误归一化);
|
|
34
|
+
- 拼版:`computeTileLayout` / `validateTiling` / `computeMaxColumns` / `tilePosition` / `resolveSheetMm` /
|
|
35
|
+
`composeTiledHtml`(标签多行多列铺到目标纸,如 70×40 标签铺满 A4)。配置为模板级 `TemplateData.tiling`,
|
|
36
|
+
目标纸可由用户自定义;页尺寸经 `PreparedDocument.paperMm` 透出,**服务端与客户端零协议改动**;
|
|
37
|
+
- DOM 能力:`@worm-vue3-print/core/browser` 导出执行器与 iframe driver;`@worm-vue3-print/core/node` 的
|
|
38
|
+
`loadExecutorBundle()` 供 Node 宿主读取 `dist/dom-executor.iife.global.js` 注入页面。
|
|
39
|
+
|
|
40
|
+
### 子路径导出
|
|
41
|
+
|
|
42
|
+
| 子路径 | 内容 | 运行环境 |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `@worm-vue3-print/core` | 表达式引擎 + 同构渲染管线(零运行时依赖) | Node / 浏览器 |
|
|
45
|
+
| `@worm-vue3-print/core/designer` | 设计器模型类型、通用工具、纯交互逻辑 | 任意(交互中的 DOM 事件绑定需浏览器) |
|
|
46
|
+
| `@worm-vue3-print/core/browser` | 浏览器分页渲染(`renderHtmlPages`)、条形码/二维码渲染器 | 仅浏览器 |
|
|
47
|
+
|
|
48
|
+
> 注意:`/designer` 子路径的 `TemplateData` 等类型是设计器完整模型,与主入口渲染管线的简化同名类型有意分离,因此不从主入口转出。
|
|
21
49
|
|
|
22
50
|
## 使用
|
|
23
51
|
|
|
@@ -48,12 +76,14 @@ import '@worm-vue3-print/canvas/native-controls.css'
|
|
|
48
76
|
:initial-template="templateData"
|
|
49
77
|
:fields="fields"
|
|
50
78
|
:is-edit="true"
|
|
51
|
-
:load-default-template="loadDefaultTemplate"
|
|
52
79
|
:show-help="true"
|
|
53
80
|
@preview="onPreview"
|
|
54
81
|
@save="onSave"
|
|
55
82
|
/>
|
|
56
83
|
|
|
84
|
+
<!-- 「加载默认布局」等业务入口由宿主自渲染,不在设计器工具栏内 -->
|
|
85
|
+
<button type="button" @click="onLoadDefaultLayout">加载默认布局</button>
|
|
86
|
+
|
|
57
87
|
<!-- 浏览器端免保存预览:直接使用当前画布 JSON + 业务数据 -->
|
|
58
88
|
<Teleport to="body">
|
|
59
89
|
<PrintHtmlPreview
|
|
@@ -84,8 +114,10 @@ function onSave(json: string) {
|
|
|
84
114
|
// 宿主持久化模板 JSON
|
|
85
115
|
}
|
|
86
116
|
|
|
87
|
-
|
|
88
|
-
|
|
117
|
+
/** 加载默认布局:宿主自实现;示例造空白默认模板,真实宿主可拉取服务端默认模板 */
|
|
118
|
+
function onLoadDefaultLayout() {
|
|
119
|
+
if (!confirm('将覆盖当前画布内容,是否继续?')) return
|
|
120
|
+
templateData.value = createDefaultTemplate()
|
|
89
121
|
}
|
|
90
122
|
</script>
|
|
91
123
|
```
|
|
@@ -93,10 +125,10 @@ function loadDefaultTemplate() {
|
|
|
93
125
|
关键 props / 事件 / 方法:
|
|
94
126
|
|
|
95
127
|
- `initial-template`:初始模板 `TemplateData`;`fields`:业务字段 `PrintBusinessField[]`;`is-edit`:是否编辑态。
|
|
96
|
-
- `load-default-template()`:可选。「加载默认布局」回调(支持异步,返回 null/undefined 视为无
|
|
97
|
-
默认布局);未注入时工具栏不展示该按钮。
|
|
98
128
|
- `show-help`:帮助入口开关,默认开启,传入 `false` 可关闭帮助按钮与帮助弹框。
|
|
99
129
|
- `getTemplateJson()`:通过 `ref` 获取当前画布模板 JSON,用于预览 / 保存。
|
|
130
|
+
- 模板加载 / 重置(如「加载默认布局」)属于宿主业务:把新的 `TemplateData` 赋给
|
|
131
|
+
`initial-template` 即可重载画布并记录一次历史(撤销可回退),设计器工具栏不内置该入口。
|
|
100
132
|
- `@preview` / `@save`:预览与保存事件,具体业务(字段查询、持久化)由宿主实现。
|
|
101
133
|
- 需要服务端 / Node 输出时,直接调用 `core` 的 `bindData` / `paginate` / `generateHtml` 即可。
|
|
102
134
|
|
|
@@ -116,4 +148,4 @@ function loadDefaultTemplate() {
|
|
|
116
148
|
```bash
|
|
117
149
|
npm run build # tsup → dist/index.js + index.cjs + d.ts
|
|
118
150
|
npm test # vitest
|
|
119
|
-
```
|
|
151
|
+
```
|