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 { 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 ) }