reprintFromMergedTemplate.ts
1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import {
normalizeLabelTemplateFromPreviewApi,
sortElementsForPreview,
} from './labelPreview/normalizePreviewTemplate'
import {
printSystemTemplateForCurrentPrinter,
type SystemTemplatePrintCanvasRasterOptions,
} from './print/manager/printerManager'
import type { SystemLabelTemplate } from './print/types/printer'
/**
* 将接口 11 返回的 `mergedTemplateJson`(或历史落库的合并模板 JSON 字符串)交给当前打印机打印。
*/
export async function printMergedTemplateJsonString (
mergedJson: string,
options: {
printQty?: number
onProgress?: (percent: number) => void
canvasRaster?: SystemTemplatePrintCanvasRasterOptions
} = {}
): Promise<void> {
let raw: unknown
try {
raw = JSON.parse(mergedJson) as unknown
} catch {
throw new Error('Invalid print snapshot JSON')
}
let tmpl = normalizeLabelTemplateFromPreviewApi(raw)
if (!tmpl) {
throw new Error('Cannot parse label template from snapshot')
}
const sorted: SystemLabelTemplate = {
...tmpl,
elements: sortElementsForPreview(tmpl.elements || []),
}
await printSystemTemplateForCurrentPrinter(
sorted,
{},
{ printQty: options.printQty ?? 1, canvasRaster: options.canvasRaster },
options.onProgress
)
}