@worm-vue3-print/core 1.2.2 → 1.3.1
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 +24 -7
- package/dist/browser/index.cjs +2338 -340
- package/dist/browser/index.d.cts +79 -6
- package/dist/browser/index.d.ts +79 -6
- package/dist/browser/index.js +283 -128
- package/dist/{chunk-HLCZHPUF.js → chunk-AKWV6SID.js} +1 -1
- package/dist/chunk-KFRPTLFV.js +3819 -0
- package/dist/client/index.cjs +381 -0
- package/dist/client/index.d.cts +241 -0
- package/dist/client/index.d.ts +241 -0
- package/dist/client/index.js +346 -0
- package/dist/designer/index.cjs +429 -22
- package/dist/designer/index.d.cts +100 -289
- package/dist/designer/index.d.ts +100 -289
- package/dist/designer/index.js +147 -26
- package/dist/dom-executor.iife.global.js +8 -0
- package/dist/driver-Dn_YAzO5.d.cts +935 -0
- package/dist/driver-Dn_YAzO5.d.ts +935 -0
- package/dist/index.cjs +2226 -163
- package/dist/index.d.cts +374 -6
- package/dist/index.d.ts +374 -6
- package/dist/index.js +180 -4
- 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-BvwlA_km.d.ts +102 -0
- package/dist/ports-Cf5sjwls.d.cts +102 -0
- package/package.json +13 -2
- package/dist/chunk-JZIVNXZ7.js +0 -1777
- package/dist/types-BGBAbQD5.d.cts +0 -184
- package/dist/types-BGBAbQD5.d.ts +0 -184
package/README.md
CHANGED
|
@@ -22,7 +22,20 @@ print-core/
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
`core` 无 Vue、无宿主依赖,可在 Node 服务端(`@worm-vue3-print/render`)与浏览器端(`@worm-vue3-print/canvas`)共用,
|
|
25
|
-
|
|
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` 注入页面。
|
|
26
39
|
|
|
27
40
|
### 子路径导出
|
|
28
41
|
|
|
@@ -63,12 +76,14 @@ import '@worm-vue3-print/canvas/native-controls.css'
|
|
|
63
76
|
:initial-template="templateData"
|
|
64
77
|
:fields="fields"
|
|
65
78
|
:is-edit="true"
|
|
66
|
-
:load-default-template="loadDefaultTemplate"
|
|
67
79
|
:show-help="true"
|
|
68
80
|
@preview="onPreview"
|
|
69
81
|
@save="onSave"
|
|
70
82
|
/>
|
|
71
83
|
|
|
84
|
+
<!-- 「加载默认布局」等业务入口由宿主自渲染,不在设计器工具栏内 -->
|
|
85
|
+
<button type="button" @click="onLoadDefaultLayout">加载默认布局</button>
|
|
86
|
+
|
|
72
87
|
<!-- 浏览器端免保存预览:直接使用当前画布 JSON + 业务数据 -->
|
|
73
88
|
<Teleport to="body">
|
|
74
89
|
<PrintHtmlPreview
|
|
@@ -99,8 +114,10 @@ function onSave(json: string) {
|
|
|
99
114
|
// 宿主持久化模板 JSON
|
|
100
115
|
}
|
|
101
116
|
|
|
102
|
-
|
|
103
|
-
|
|
117
|
+
/** 加载默认布局:宿主自实现;示例造空白默认模板,真实宿主可拉取服务端默认模板 */
|
|
118
|
+
function onLoadDefaultLayout() {
|
|
119
|
+
if (!confirm('将覆盖当前画布内容,是否继续?')) return
|
|
120
|
+
templateData.value = createDefaultTemplate()
|
|
104
121
|
}
|
|
105
122
|
</script>
|
|
106
123
|
```
|
|
@@ -108,10 +125,10 @@ function loadDefaultTemplate() {
|
|
|
108
125
|
关键 props / 事件 / 方法:
|
|
109
126
|
|
|
110
127
|
- `initial-template`:初始模板 `TemplateData`;`fields`:业务字段 `PrintBusinessField[]`;`is-edit`:是否编辑态。
|
|
111
|
-
- `load-default-template()`:可选。「加载默认布局」回调(支持异步,返回 null/undefined 视为无
|
|
112
|
-
默认布局);未注入时工具栏不展示该按钮。
|
|
113
128
|
- `show-help`:帮助入口开关,默认开启,传入 `false` 可关闭帮助按钮与帮助弹框。
|
|
114
129
|
- `getTemplateJson()`:通过 `ref` 获取当前画布模板 JSON,用于预览 / 保存。
|
|
130
|
+
- 模板加载 / 重置(如「加载默认布局」)属于宿主业务:把新的 `TemplateData` 赋给
|
|
131
|
+
`initial-template` 即可重载画布并记录一次历史(撤销可回退),设计器工具栏不内置该入口。
|
|
115
132
|
- `@preview` / `@save`:预览与保存事件,具体业务(字段查询、持久化)由宿主实现。
|
|
116
133
|
- 需要服务端 / Node 输出时,直接调用 `core` 的 `bindData` / `paginate` / `generateHtml` 即可。
|
|
117
134
|
|
|
@@ -131,4 +148,4 @@ function loadDefaultTemplate() {
|
|
|
131
148
|
```bash
|
|
132
149
|
npm run build # tsup → dist/index.js + index.cjs + d.ts
|
|
133
150
|
npm test # vitest
|
|
134
|
-
```
|
|
151
|
+
```
|