From 71c2bc5d402ad80ad52fccc40d9a781be7892e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E6=98=8E?= <251352239@qq.com> Date: Wed, 12 Aug 2026 23:49:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=93=E5=8D=B0=E6=9C=BA?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- env.d.ts | 6 + screenshots/logo.png | Bin 0 -> 167905 bytes src/config/print-settings.spec.ts | 2 +- src/config/print-settings.ts | 12 +- src/config/printer.ts | 93 ++++ src/core/chartkit/bar.ts | 10 +- src/core/chartkit/line.ts | 10 +- src/core/chartkit/pie.ts | 4 +- src/core/export-engine/chart-svg-to-path.ts | 85 ++++ src/core/export-engine/export-pdf.ts | 50 +-- src/core/print-client/client.ts | 192 ++++++++ src/core/print-client/index.ts | 41 ++ src/core/print-client/payload.ts | 67 +++ src/core/print-client/types.ts | 153 +++++++ src/design/composables/usePrinterProbe.ts | 109 +++++ src/design/modals/PrintDialog.vue | 415 +++++++++++++----- src/design/modals/SettingsModal.vue | 140 ++++-- src/design/modals/TemplateMarket.vue | 1 + src/design/stores/designer.ts | 2 +- src/design/toolbar/TopToolbar.vue | 109 ++++- .../mock/data/market-templates.spec.ts | 116 ++--- src/repository/mock/data/market-templates.ts | 257 ++++++++++- src/types/opentype.d.ts | 3 + 24 files changed, 1609 insertions(+), 272 deletions(-) create mode 100644 screenshots/logo.png create mode 100644 src/config/printer.ts create mode 100644 src/core/export-engine/chart-svg-to-path.ts create mode 100644 src/core/print-client/client.ts create mode 100644 src/core/print-client/index.ts create mode 100644 src/core/print-client/payload.ts create mode 100644 src/core/print-client/types.ts create mode 100644 src/design/composables/usePrinterProbe.ts create mode 100644 src/types/opentype.d.ts diff --git a/README.md b/README.md index c72a11b..038352d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@

- OpenPrint Logo + OpenPrint Logo

-

OpenPrint

@@ -26,7 +25,6 @@ 部署 · FAQ

-
**OpenPrint** 是一款开源、零后端依赖的 Web 打印模板可视化设计器。它让用户通过拖拽即可设计快递面单、发票、标签、报表等打印模板,支持 AI 一句话生成、云打印、C++ 桌面客户端静默打印,3 分钟即可对接 ERP 系统。 diff --git a/env.d.ts b/env.d.ts index 1c055af..fdd8cde 100644 --- a/env.d.ts +++ b/env.d.ts @@ -5,6 +5,12 @@ interface ImportMetaEnv { readonly VITE_OPENPRINT_API_BASE?: string /** 可选:Bearer 鉴权 token */ readonly VITE_OPENPRINT_API_TOKEN?: string + /** + * 可选:本地打印客户端基地址,覆盖出厂默认 http://127.0.0.1:18888。 + * 例:VITE_OPENPRINT_PRINTER_BASE=http://192.168.1.20:19000 + * 优先级低于「设置 → 本地打印」里手填的 IP/端口。 + */ + readonly VITE_OPENPRINT_PRINTER_BASE?: string } interface ImportMeta { diff --git a/screenshots/logo.png b/screenshots/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..243b966e903fa2f055c36604e4a43ab76bdee932 GIT binary patch literal 167905 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Ϝsm`I~ZTF|C4^Fz{_iL{1!!ekDNx7%j;ZW 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 { const s = readPrintSettings() expect(s.local.method).toBe('silent') expect(s.local.copies).toBe(DEFAULT_PRINT_SETTINGS.local.copies) - expect(s.local.silent).toEqual({ host: '127.0.0.1', port: 9122 }) + expect(s.local.silent).toEqual({ host: '127.0.0.1', port: 18888 }) expect(s.remote.enabled).toBe(false) }) }) diff --git a/src/config/print-settings.ts b/src/config/print-settings.ts index 8ff8114..b587d4f 100644 --- a/src/config/print-settings.ts +++ b/src/config/print-settings.ts @@ -6,11 +6,15 @@ export interface LocalPrintConfig { /** 打印方式:browser=浏览器打印对话框 / silent=客户端静默打印(需本地客户端服务) */ method: 'browser' | 'silent' - /** 静默打印客户端连接地址(仅 method=silent 生效) */ + /** + * 本地打印客户端连接地址。 + * 同时也是 /health、/printers、/print 三个接口的基地址来源, + * 解析优先级见 `@/config/printer` 的 resolvePrinterBaseUrl()。 + */ silent: { - /** 客户端所在主机 IP(默认本机回环) */ + /** 客户端所在主机 IP(默认本机回环 127.0.0.1) */ host: string - /** 客户端服务端口(默认 9122) */ + /** 客户端服务端口(默认 18888) */ port: number } /** 副本数 */ @@ -40,7 +44,7 @@ export const PRINT_SETTINGS_KEY = 'openprint:print-settings' export const DEFAULT_PRINT_SETTINGS: PrintSettings = { local: { method: 'browser', - silent: { host: '127.0.0.1', port: 9122 }, + silent: { host: '127.0.0.1', port: 18888 }, copies: 1, closeAfterPrint: true, }, diff --git a/src/config/printer.ts b/src/config/printer.ts new file mode 100644 index 0000000..1618a8f --- /dev/null +++ b/src/config/printer.ts @@ -0,0 +1,93 @@ +/** + * 打印客户端服务地址解析 —— 端口/地址覆盖的唯一出口 + * + * 出厂默认:http://127.0.0.1:18888 + * + * 覆盖优先级(高 → 低): + * 1. 用户在「设置 → 本地打印」里填的 IP/端口(localStorage `openprint:print-settings`) + * 2. 构建期环境变量 `VITE_OPENPRINT_PRINTER_BASE`(项目根 .env) + * 3. 出厂默认 http://127.0.0.1:18888 + * + * 主任铁律:无后端全链路可用 —— 这里只读本地存储与构建期常量,绝不请求任何后端。 + */ +import { DEFAULT_PRINTER_BASE_URL } from '@/core/print-client' +import { PRINT_SETTINGS_KEY } from './print-settings' + +/** 构建期环境变量覆盖(示例:VITE_OPENPRINT_PRINTER_BASE=http://192.168.1.20:19000) */ +const ENV_PRINTER_BASE = (import.meta.env.VITE_OPENPRINT_PRINTER_BASE ?? '').trim() + +/** 地址来源,UI 用于提示用户当前生效的是哪一层配置 */ +export type PrinterBaseSource = 'settings' | 'env' | 'default' + +/** 出厂默认,供 UI 占位/重置使用 */ +export const FACTORY_PRINTER_BASE_URL = DEFAULT_PRINTER_BASE_URL +export const FACTORY_PRINTER_HOST = '127.0.0.1' +export const FACTORY_PRINTER_PORT = 18888 + +/** 补全协议 + 去掉尾部斜杠 */ +export function normalizePrinterBase(input: string): string { + const raw = input.trim().replace(/\/+$/, '') + if (!raw) return '' + return /^https?:\/\//i.test(raw) ? raw : `http://${raw}` +} + +/** host + port → 基地址。host 可带协议(http://x)或只写 IP/域名 */ +export function buildPrinterBase(host: string, port: number): string { + const base = normalizePrinterBase(host) + if (!base) return '' + // host 里已经自带端口就不再拼(如用户填了 "127.0.0.1:18888") + if (/:\d+$/.test(base)) return base + const p = Number.isFinite(port) && port > 0 ? Math.floor(port) : FACTORY_PRINTER_PORT + return `${base}:${p}` +} + +/** + * 读取用户在设置里显式配置的端点。 + * 只有 localStorage 里确实存在 local.silent.host/port 才算「用户配置过」, + * 否则返回 null 让位给环境变量。 + */ +export function readStoredPrinterEndpoint(): { host: string; port: number } | null { + if (typeof window === 'undefined') return null + try { + const raw = window.localStorage.getItem(PRINT_SETTINGS_KEY) + if (!raw) return null + const parsed = JSON.parse(raw) as { + local?: { silent?: { host?: unknown; port?: unknown } } + } + const silent = parsed?.local?.silent + if (!silent) return null + const host = typeof silent.host === 'string' ? silent.host.trim() : '' + const port = typeof silent.port === 'number' ? silent.port : Number(silent.port) + if (!host || !Number.isFinite(port) || port <= 0) return null + return { host, port: Math.floor(port) } + } catch { + return null + } +} + +/** 当前生效的打印客户端基地址 */ +export function resolvePrinterBaseUrl(): string { + const stored = readStoredPrinterEndpoint() + if (stored) { + const base = buildPrinterBase(stored.host, stored.port) + if (base) return base + } + if (ENV_PRINTER_BASE) { + const base = normalizePrinterBase(ENV_PRINTER_BASE) + if (base) return base + } + return FACTORY_PRINTER_BASE_URL +} + +/** 当前地址来自哪一层配置(UI 提示用) */ +export function resolvePrinterBaseSource(): PrinterBaseSource { + if (readStoredPrinterEndpoint()) return 'settings' + if (ENV_PRINTER_BASE) return 'env' + return 'default' +} + +/** 是否存在构建期环境变量覆盖(设置面板里给出说明) */ +export const hasEnvPrinterBase = ENV_PRINTER_BASE.length > 0 + +/** 环境变量原值(仅用于设置面板展示) */ +export const envPrinterBase = ENV_PRINTER_BASE diff --git a/src/core/chartkit/bar.ts b/src/core/chartkit/bar.ts index a9d815e..3df37d9 100644 --- a/src/core/chartkit/bar.ts +++ b/src/core/chartkit/bar.ts @@ -21,7 +21,7 @@ export function renderBar(model: ChartModel): string { const titleH = title ? 22 : 0 const mTop = 10 + titleH const mRight = 16 - const mBottom = (showAxis ? 38 : 22) + legendH + const mBottom = (showAxis ? 42 : 22) + legendH const mLeft = showAxis ? 44 : 16 const px0 = mLeft @@ -64,7 +64,7 @@ export function renderBar(model: ChartModel): string { if (showGrid && i > 0) { parts.push(``) } - parts.push(`${fmt(v)}`) + parts.push(`${fmt(v)}`) } // 基线 parts.push(``) @@ -83,7 +83,7 @@ export function renderBar(model: ChartModel): string { const color = seriesColor(model.series[s]!, s, opt) parts.push(``) if (valueLabel && h > 0) { - parts.push(`${fmt(val)}`) + parts.push(`${fmt(val)}`) } } // x 轴标签:始终以类目为基准居中于对应条带正下方,并与图表留一点间距 @@ -102,7 +102,7 @@ export function renderBar(model: ChartModel): string { } const startX = legendStartX(align, W, totalW, px0) let lx = startX - let ly = py1 + (showAxis ? 30 : 16) + let ly = py1 + (showAxis ? 40 : 16) for (let s = 0; s < sCount; s++) { const name = model.series[s]!.name || `系列${s + 1}` const color = seriesColor(model.series[s]!, s, opt) @@ -112,7 +112,7 @@ export function renderBar(model: ChartModel): string { ly += 16 } parts.push(``) - parts.push(`${escapeXml(truncate(name, 10))}`) + parts.push(`${escapeXml(truncate(name, 10))}`) lx += itemW } } diff --git a/src/core/chartkit/line.ts b/src/core/chartkit/line.ts index 3e1641a..315657c 100644 --- a/src/core/chartkit/line.ts +++ b/src/core/chartkit/line.ts @@ -43,7 +43,7 @@ export function renderLine(model: ChartModel): string { const titleH = title ? 22 : 0 const mTop = 10 + titleH const mRight = 16 - const mBottom = (showAxis ? 38 : 22) + legendH + const mBottom = (showAxis ? 42 : 22) + legendH const mLeft = showAxis ? 44 : 16 const px0 = mLeft @@ -95,7 +95,7 @@ export function renderLine(model: ChartModel): string { if (showGrid && i > 0) { parts.push(``) } - parts.push(`${fmt(v)}`) + parts.push(`${fmt(v)}`) } parts.push(``) parts.push(``) @@ -126,7 +126,7 @@ export function renderLine(model: ChartModel): string { const series = model.series[si]! for (let c = 0; c < sp.pts.length; c++) { const v = series.data[c] ?? 0 - parts.push(`${fmt(v)}`) + parts.push(`${fmt(v)}`) } } } @@ -140,7 +140,7 @@ export function renderLine(model: ChartModel): string { } const startX = legendStartX(align, W, totalW, px0) let lx = startX - let ly = py1 + (showAxis ? 30 : 16) + let ly = py1 + (showAxis ? 40 : 16) for (let s = 0; s < seriesPts.length; s++) { const name = seriesPts[s]!.name || `系列${s + 1}` const color = seriesPts[s]!.color @@ -150,7 +150,7 @@ export function renderLine(model: ChartModel): string { ly += 16 } parts.push(``) - parts.push(`${escapeXml(truncate(name, 10))}`) + parts.push(`${escapeXml(truncate(name, 10))}`) lx += itemW } } diff --git a/src/core/chartkit/pie.ts b/src/core/chartkit/pie.ts index ee8f41f..3fe9cfd 100644 --- a/src/core/chartkit/pie.ts +++ b/src/core/chartkit/pie.ts @@ -58,7 +58,7 @@ export function renderPie(model: ChartModel): string { const lr = donut ? (rOuter + rInner) / 2 : rOuter * 0.62 const p = polarL(lr, mid) const pct = ((v / total) * 100).toFixed(0) + '%' - parts.push(`${pct}`) + parts.push(`${pct}`) } } @@ -81,7 +81,7 @@ export function renderPie(model: ChartModel): string { ly += 16 } parts.push(``) - parts.push(`${escapeXml(truncate(name, 10))}`) + parts.push(`${escapeXml(truncate(name, 10))}`) lx += itemW } } diff --git a/src/core/export-engine/chart-svg-to-path.ts b/src/core/export-engine/chart-svg-to-path.ts new file mode 100644 index 0000000..c48bd70 --- /dev/null +++ b/src/core/export-engine/chart-svg-to-path.ts @@ -0,0 +1,85 @@ +/** + * chart-svg-to-path —— 把图表 SVG 里的 转成矢量 字形轮廓 + * + * 背景:jsPDF 只能内嵌 TrueType(glyf) 字体,无法内嵌 CFF/OpenType 字体; + * 思源宋体 .ttf 实为 CFF,jsPDF 内嵌会静默失败 → 矢量图表中文标签变空白。 + * 解决:在导出 PDF 的矢量路径里,用 opentype.js 把每个字形展开为 path, + * 文本即成为与字体无关的矢量轮廓,svg2pdf 直接画 path,中文不再丢。 + * + * 仅 export-pdf 的图表矢量路径按需动态调用,不进主包、不影响设计期/预览。 + */ +const SERIF_TTF_URL = '/fonts/SourceHanSerifCN-Regular.ttf' + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +let fontPromise: Promise | null = null + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +async function loadFont(): Promise { + if (!fontPromise) { + fontPromise = (async () => { + try { + const res = await fetch(SERIF_TTF_URL) + if (!res.ok) return null + const buf = await res.arrayBuffer() + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const ot: any = await import('opentype.js') + const parse = ot.parse ?? ot.default?.parse ?? ot.default + return parse(buf) + } catch { + return null + } + })() + } + return fontPromise +} + +/** + * 把图表 SVG 字符串里的所有 替换为字形轮廓 。 + * 字体加载失败/解析异常时原样返回(交给 svg2pdf,最坏情况该页走栅格兜底)。 + */ +export async function outlineChartSvgText(svg: string): Promise { + const font = await loadFont() + if (!font) return svg + + const doc = new DOMParser().parseFromString(svg, 'image/svg+xml') + const svgEl = doc.documentElement + if (!svgEl || svgEl.nodeName.toLowerCase() !== 'svg') return svg + + const texts = Array.from(svgEl.getElementsByTagName('text')) + for (const t of texts) { + const text = t.textContent ?? '' + if (!text) { + t.remove() + continue + } + const x = parseFloat(t.getAttribute('x') ?? '0') || 0 + const y = parseFloat(t.getAttribute('y') ?? '0') || 0 + const fontSize = parseFloat(t.getAttribute('font-size') ?? '10') || 10 + const fill = t.getAttribute('fill') || '#000000' + const anchor = (t.getAttribute('text-anchor') || 'start').toLowerCase() + + const scale = fontSize / font.unitsPerEm + const total = font.getAdvanceWidth(text, fontSize) + let startX = x + if (anchor === 'middle') startX = x - total / 2 + else if (anchor === 'end') startX = x - total + + const ds: string[] = [] + let cursor = startX + for (const ch of text) { + const g = font.charToGlyph(ch) + if (!g) continue + const gp = g.getPath(cursor, y, fontSize) + const d = gp.toPathData(2) + if (d && d.trim()) ds.push(d) + cursor += (g.advanceWidth || 0) * scale + } + + const path = doc.createElementNS('http://www.w3.org/2000/svg', 'path') + path.setAttribute('d', ds.join(' ')) + path.setAttribute('fill', fill) + if (t.parentNode) t.parentNode.replaceChild(path, t) + } + + return new XMLSerializer().serializeToString(svgEl) +} diff --git a/src/core/export-engine/export-pdf.ts b/src/core/export-engine/export-pdf.ts index eb63628..d50930e 100644 --- a/src/core/export-engine/export-pdf.ts +++ b/src/core/export-engine/export-pdf.ts @@ -4,13 +4,15 @@ * ## 图表走矢量(svg2pdf) * 设计器一切以 SVG 为真相源。为让图表在 PDF 里达到「印刷级矢量」: * 1. 每页先**剥离 chart 控件** → 栅格化(文本/表格位图底图)→ addImage 作背景; - * 2. 再遍历该页 chart 节点,用 `svg2pdf` 把其 SVG 以**矢量**注入 jsPDF 对应 mm 盒; - * 3. 思源宋体 TTF 注册进 jsPDF('SourceHanSerifCN'),图表中文标签才不会变空白/方块。 + * 2. 再遍历该页 chart 节点,把 SVG 里的 `` 用 opentype.js 展开为**矢量字形轮廓**, + * 再用 `svg2pdf` 把其 SVG 以**矢量**注入 jsPDF 对应 mm 盒; + * (关键:jsPDF 只能内嵌 TrueType 字体、无法内嵌 CFF/OpenType,而思源宋体恰为 CFF, + * 直接注册会静默失败导致中文标签空白——转轮廓后文字与字体完全解耦,中文必现。) * * 兜底: * - 图表被旋转 → 整页退回旧的全栅格化(旋转在矢量叠加里不易对齐); - * - 单个图表 svg2pdf 失败 → 该图表单独栅格化后叠加(不丢图); - * - 字体加载失败(极端环境)→ 整页退回全栅格化(仍是位图,但保证有图)。 + * - 单个图表矢量失败/字形展开失败 → 该图表单独栅格化后叠加(不丢图); + * - 整页矢量叠加彻底失败 → 整页退回全栅格化(仍是位图,但保证有图)。 * * 非图表页(无 chart 控件)仍走原全栅格化位图路径,行为与旧版一致。 */ @@ -20,14 +22,12 @@ import { embedFontsInSvg, type FontFaceDef } from './fonts' import type { PageDecoration } from '@/types/template' import { blobToDataURL } from './util' import { mmv } from '@/core/renderer-html/css-generator' +import { outlineChartSvgText } from './chart-svg-to-path' -/** 思源宋体 —— PDF 唯一内联字体(写死 TTF,位图 PDF 保证中文衬线效果;矢量图表也注册它) */ +/** 思源宋体 —— 位图底图(含非图表文本)内联字体,保证中文衬线效果 */ const PDF_FONTS: FontFaceDef[] = [ { family: '思源宋体', src: '/fonts/SourceHanSerifCN-Regular.ttf', weight: 400 }, ] -/** 矢量图表文本使用的 jsPDF 字体名(必须与 chartkit SVG 的 font-family 首选项一致) */ -const SERIF_FONT_NAME = 'SourceHanSerifCN' -const SERIF_TTF_URL = '/fonts/SourceHanSerifCN-Regular.ttf' export interface PdfOptions { /** 高清倍率,1=96dpi / 2=192dpi(推荐)/ 3=288dpi,默认 2 */ @@ -76,31 +76,6 @@ function chartsOf(page: LayoutPage): ChartBox[] { return out } -/** ArrayBuffer → base64(分块,避免 call stack 溢出) */ -function arrayBufferToBase64(buf: ArrayBuffer): string { - const bytes = new Uint8Array(buf) - let bin = '' - const chunk = 0x8000 - for (let i = 0; i < bytes.length; i += chunk) { - bin += String.fromCharCode(...bytes.subarray(i, i + chunk)) - } - return btoa(bin) -} - -/** 把思源宋体 TTF 注册进 jsPDF,供矢量图表中文标签使用。失败不抛(退化为位图兜底) */ -async function registerSerifFont(doc: { addFileToVFS: (n: string, d: string) => void; addFont: (f: string, n: string, s: string) => void }): Promise { - try { - const res = await fetch(SERIF_TTF_URL) - if (!res.ok) return false - const b64 = arrayBufferToBase64(await res.arrayBuffer()) - doc.addFileToVFS(`${SERIF_FONT_NAME}.ttf`, b64) - doc.addFont(`${SERIF_FONT_NAME}.ttf`, SERIF_FONT_NAME, 'normal') - return true - } catch { - return false - } -} - /** 单图表栅格化(svg2pdf 失败时的兜底,保证不丢图) */ async function rasterizeChart(chartSvg: string, wMm: number, hMm: number, scale: number): Promise { const inner = `

${chartSvg}
` @@ -127,8 +102,6 @@ export async function documentToPdf(result: LayoutResult, opts: PdfOptions = {}) const doc = new JsPDF({ unit: 'mm', format: [w, h], orientation }) - let serifReady = false - for (let i = 0; i < result.pages.length; i++) { if (i > 0) doc.addPage([w, h], orientation) @@ -143,8 +116,7 @@ export async function documentToPdf(result: LayoutResult, opts: PdfOptions = {}) continue } - // 矢量路径:先栅格化"剥掉图表"的底图,再把图表以矢量叠加 - if (!serifReady) serifReady = await registerSerifFont(doc) + // 矢量路径:先栅格化"剥掉图表"的底图,再把图表以矢量叠加(文字已转轮廓,无需内嵌字体) const strippedResult: LayoutResult = { ...result, pages: result.pages.map((p, idx) => (idx === i ? stripCharts(p) : p)), @@ -155,7 +127,9 @@ export async function documentToPdf(result: LayoutResult, opts: PdfOptions = {}) let allVectorOk = true for (const ch of charts) { try { - const el = svgElementFromString(ch.svg) + // 字形转轮廓:把 展开为矢量 path,避免 jsPDF 无法内嵌 CFF 字体导致中文空白 + const outlinedSvg = await outlineChartSvgText(ch.svg) + const el = svgElementFromString(outlinedSvg) el.style.position = 'absolute' el.style.left = '-99999px' el.style.top = '0' diff --git a/src/core/print-client/client.ts b/src/core/print-client/client.ts new file mode 100644 index 0000000..bd4a0fe --- /dev/null +++ b/src/core/print-client/client.ts @@ -0,0 +1,192 @@ +/** + * 本地打印机客户端 HTTP 客户端 —— 纯 TypeScript,零框架依赖 + * + * 所有方法都显式接收 baseUrl(由 `@/config/printer` 解析), + * 便于 headless / 单测直接注入,不隐式读全局配置。 + */ +import { + PrintClientError, + type PrinterHealth, + type PrinterInfo, + type PrinterListResponse, + type PrintJobRequest, + type PrintJobResponse, +} from './types' + +/** 出厂默认地址(用户未配置时使用) */ +export const DEFAULT_PRINTER_BASE_URL = 'http://127.0.0.1:18888' + +/** 探测类请求默认超时(ms)—— 本机服务,短超时快速失败 */ +export const PROBE_TIMEOUT_MS = 3000 + +/** 提交打印任务默认超时(ms)—— 大文档 base64 传输留足时间 */ +export const SUBMIT_TIMEOUT_MS = 30000 + +/** 去掉尾部斜杠,拼接路径 */ +function joinUrl(base: string, path: string): string { + return `${base.replace(/\/+$/, '')}${path}` +} + +/** + * 带超时 + 错误分类的 fetch。 + * 用手工 AbortController 而非 AbortSignal.timeout,才能区分「超时」与「连不上」。 + */ +async function request( + url: string, + init: RequestInit, + timeoutMs: number, +): Promise { + const ctrl = new AbortController() + let timedOut = false + const timer = setTimeout(() => { + timedOut = true + ctrl.abort() + }, timeoutMs) + + let res: Response + try { + res = await fetch(url, { ...init, signal: ctrl.signal }) + } catch { + if (timedOut) { + throw new PrintClientError('timeout', `请求超时(${timeoutMs}ms):${url}`) + } + throw new PrintClientError('network', `无法连接打印客户端:${url}`) + } finally { + clearTimeout(timer) + } + + if (!res.ok) { + throw new PrintClientError('http', `HTTP ${res.status} ${res.statusText}`, res.status) + } + + let json: unknown + try { + json = await res.json() + } catch { + throw new PrintClientError('parse', '响应不是合法 JSON') + } + if (json === null || typeof json !== 'object') { + throw new PrintClientError('parse', '响应结构异常') + } + return json as T +} + +/* ------------------------------ GET /health ------------------------------ */ + +/** + * 健康检查。成功返回服务版本、打印机数量、运行时长。 + * @throws PrintClientError 连接失败 / 超时 / ok:false + */ +export async function checkHealth( + baseUrl: string = DEFAULT_PRINTER_BASE_URL, + timeoutMs: number = PROBE_TIMEOUT_MS, +): Promise { + const data = await request>( + joinUrl(baseUrl, '/health'), + { method: 'GET', headers: { Accept: 'application/json' } }, + timeoutMs, + ) + if (data.ok !== true) { + throw new PrintClientError('service', '打印客户端报告服务异常(ok=false)') + } + return { + app: data.app ?? 'Unknown', + ok: true, + printers: typeof data.printers === 'number' ? data.printers : 0, + time: data.time ?? '', + uptimeSec: typeof data.uptimeSec === 'number' ? data.uptimeSec : 0, + version: data.version ?? '', + } +} + +/* ------------------------------ GET /printers ------------------------------ */ + +/** 单台打印机字段归一化(服务端字段缺失时给安全默认,避免 UI 崩) */ +function normalizePrinter(raw: Partial, index: number): PrinterInfo { + return { + driver: raw.driver ?? '', + isDefault: raw.isDefault === true, + isOnline: raw.isOnline !== false, + kind: raw.kind === 'virtual' || raw.kind === 'ticket' ? raw.kind : 'common', + maxDpi: typeof raw.maxDpi === 'number' ? raw.maxDpi : 0, + name: raw.name ?? `未命名打印机 ${index + 1}`, + status: raw.status === 'error' ? 'error' : 'idle', + supportsColor: raw.supportsColor === true, + supportsDuplex: raw.supportsDuplex === true, + trays: Array.isArray(raw.trays) ? raw.trays.filter((t): t is string => typeof t === 'string') : [], + } +} + +/** + * 获取打印机列表。 + * 注意:**以 `printers` 数组长度为准**,服务端的 `count` 字段仅供参考(实测可能不一致)。 + */ +export async function listPrinters( + baseUrl: string = DEFAULT_PRINTER_BASE_URL, + timeoutMs: number = PROBE_TIMEOUT_MS, +): Promise { + const data = await request>( + joinUrl(baseUrl, '/printers'), + { method: 'GET', headers: { Accept: 'application/json' } }, + timeoutMs, + ) + if (data.ok === false) { + throw new PrintClientError('service', '打印客户端未能枚举打印机') + } + if (!Array.isArray(data.printers)) { + throw new PrintClientError('parse', '响应缺少 printers 数组') + } + return data.printers.map((p, i) => normalizePrinter(p ?? {}, i)) +} + +/* ------------------------------ POST /print ------------------------------ */ + +/** + * 提交打印任务。 + * 载荷约定(见《打印机数据交互文档》): + * - 单页 → `format:'svg'`,`encoding:'utf8'`,content 为 SVG 原文 + * - 多页 → `format:'pdf'`,`encoding:'base64'`,content 为 base64(无 data: 前缀) + */ +export async function submitPrintJob( + job: PrintJobRequest, + baseUrl: string = DEFAULT_PRINTER_BASE_URL, + timeoutMs: number = SUBMIT_TIMEOUT_MS, +): Promise { + const data = await request>( + joinUrl(baseUrl, '/print'), + { + method: 'POST', + headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, + body: JSON.stringify(job), + }, + timeoutMs, + ) + if (data.ok !== true) { + throw new PrintClientError('service', data.message || '打印客户端拒绝了本次任务') + } + return { ok: true, jobId: data.jobId, message: data.message } +} + +/* ------------------------------ 工具 ------------------------------ */ + +/** + * Blob → base64(不含 `data:*;base64,` 前缀)。 + * 用于把 PDF 二进制转成可 JSON 传输的字符串。 + */ +export function blobToBase64(blob: Blob): Promise { + return new Promise((resolve, reject) => { + const reader = new FileReader() + reader.onerror = () => reject(new Error('读取导出文件失败')) + reader.onload = () => { + const result = String(reader.result ?? '') + const comma = result.indexOf(',') + resolve(comma >= 0 ? result.slice(comma + 1) : result) + } + reader.readAsDataURL(blob) + }) +} + +/** Blob → utf8 文本(用于 SVG 载荷) */ +export function blobToText(blob: Blob): Promise { + return blob.text() +} diff --git a/src/core/print-client/index.ts b/src/core/print-client/index.ts new file mode 100644 index 0000000..510e62b --- /dev/null +++ b/src/core/print-client/index.ts @@ -0,0 +1,41 @@ +/** + * 本地打印机客户端服务层入口 + * + * 用法: + * ```ts + * import { checkHealth, listPrinters, submitPrintJob } from '@/core/print-client' + * import { resolvePrinterBaseUrl } from '@/config/printer' + * + * const base = resolvePrinterBaseUrl() + * const health = await checkHealth(base) + * const printers = await listPrinters(base) + * ``` + */ +export { + DEFAULT_PRINTER_BASE_URL, + PROBE_TIMEOUT_MS, + SUBMIT_TIMEOUT_MS, + checkHealth, + listPrinters, + submitPrintJob, + blobToBase64, + blobToText, +} from './client' + +export { PrintClientError, describePrintError } from './types' + +export { buildPrintPayload, formatPayloadSize } from './payload' +export type { PrintPayload, BuildPrintPayloadOptions } from './payload' + +export type { + PrinterHealth, + PrinterInfo, + PrinterKind, + PrinterState, + PrinterListResponse, + PrintPayloadFormat, + PrintPayloadEncoding, + PrintJobRequest, + PrintJobResponse, + PrintClientErrorCode, +} from './types' diff --git a/src/core/print-client/payload.ts b/src/core/print-client/payload.ts new file mode 100644 index 0000000..8b176be --- /dev/null +++ b/src/core/print-client/payload.ts @@ -0,0 +1,67 @@ +/** + * 打印载荷构建 —— 模板 + 数据 → 推送给本地打印客户端的文档内容 + * + * 推送格式规则(主任定,2026-08-12): + * - **单页** → SVG(矢量原文,utf8)。体积小、矢量无损,客户端可直接送打印或转 EMF。 + * - **多页** → PDF(base64)。PDF 天然多页,base64 后可走 JSON 传输。 + * + * 只 render 一次:先 `renderDocument()` 拿到 LayoutResult 判定页数, + * 再按页数走对应导出器,避免 `exportDocument()` 内部二次分页。 + */ +import type { RenderRequest } from '@/core/sdk' +import { renderDocument } from '@/core/sdk' +import { documentToPdf, documentToSvgString } from '@/core/export-engine' +import type { FontFaceDef } from '@/core/export-engine' +import { templateUsedFonts, toExportFontDefs } from '@/core/fonts/loader' +import { blobToBase64 } from './client' +import type { PrintPayloadEncoding, PrintPayloadFormat } from './types' + +export interface PrintPayload { + /** 载荷格式:单页 svg / 多页 pdf */ + format: PrintPayloadFormat + /** 载荷编码:svg=utf8 / pdf=base64 */ + encoding: PrintPayloadEncoding + /** 文档内容 */ + content: string + /** 总页数 */ + pages: number + /** 载荷字符长度(UI 展示体积用) */ + bytes: number +} + +export interface BuildPrintPayloadOptions { + /** PDF 位图底图倍率,默认 2(192dpi) */ + scale?: number + /** + * 需要内联进 SVG 的字体。不传则自动从模板里提取用到的内置字体, + * 保证客户端渲染 SVG 时中文不掉字(SVG 是隔离上下文,看不到宿主 @font-face)。 + */ + fonts?: FontFaceDef[] +} + +/** 构建推送载荷(单页 SVG / 多页 PDF-base64) */ +export async function buildPrintPayload( + request: RenderRequest, + options: BuildPrintPayloadOptions = {}, +): Promise { + const result = await renderDocument(request) + const pages = result.pages.length + const deco = request.output?.pageDecoration + + if (pages <= 1) { + const fonts = options.fonts ?? toExportFontDefs(templateUsedFonts(request.template)) + const svg = await documentToSvgString(result, fonts.length ? fonts : undefined, deco) + return { format: 'svg', encoding: 'utf8', content: svg, pages: Math.max(pages, 1), bytes: svg.length } + } + + const blob = await documentToPdf(result, { scale: options.scale ?? 2, pageDecoration: deco }) + const base64 = await blobToBase64(blob) + return { format: 'pdf', encoding: 'base64', content: base64, pages, bytes: base64.length } +} + +/** 人类可读体积(UI 提示用) */ +export function formatPayloadSize(bytes: number): string { + if (bytes < 1024) return `${bytes} B` + if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB` + return `${(bytes / 1024 / 1024).toFixed(2)} MB` +} diff --git a/src/core/print-client/types.ts b/src/core/print-client/types.ts new file mode 100644 index 0000000..21243ea --- /dev/null +++ b/src/core/print-client/types.ts @@ -0,0 +1,153 @@ +/** + * 本地打印机客户端服务 —— 协议类型 + * + * 对接本机常驻的打印客户端(默认 http://127.0.0.1:18888),提供: + * GET /health 服务健康与版本 + * GET /printers 打印机列表 + * POST /print 提交打印任务(单页 SVG / 多页 PDF-base64) + * + * 主任铁律:无后端全链路可用 —— 客户端不可达时设计器一切功能照常,只是不能推送打印。 + */ + +/* ------------------------------ /health ------------------------------ */ + +/** GET /health 响应体 */ +export interface PrinterHealth { + /** 客户端应用名,如 "OpenPrint" */ + app: string + /** 服务是否正常 */ + ok: boolean + /** 当前可用打印机数量 */ + printers: number + /** 服务端时间(ISO 字符串) */ + time: string + /** 已运行秒数 */ + uptimeSec: number + /** 客户端版本号 */ + version: string +} + +/* ------------------------------ /printers ------------------------------ */ + +/** 打印机类型:虚拟打印机 / 普通打印机 / 票据打印机 */ +export type PrinterKind = 'virtual' | 'common' | 'ticket' + +/** 打印机运行状态 */ +export type PrinterState = 'idle' | 'error' + +/** 单台打印机描述 */ +export interface PrinterInfo { + /** 驱动名 */ + driver: string + /** 是否系统默认打印机 */ + isDefault: boolean + /** 是否在线 */ + isOnline: boolean + /** 打印机类型 */ + kind: PrinterKind + /** 最大分辨率(DPI) */ + maxDpi: number + /** 打印机名(提交任务时的唯一标识) */ + name: string + /** 运行状态 */ + status: PrinterState + /** 是否支持彩色 */ + supportsColor: boolean + /** 是否支持双面 */ + supportsDuplex: boolean + /** 纸盒列表 */ + trays: string[] +} + +/** GET /printers 响应体 */ +export interface PrinterListResponse { + /** 服务端声明的数量(可能与 printers.length 不一致,以数组为准) */ + count: number + ok: boolean + printers: PrinterInfo[] +} + +/* ------------------------------ /print ------------------------------ */ + +/** 推送载荷格式:单页 SVG(矢量文本),多页 PDF(base64) */ +export type PrintPayloadFormat = 'svg' | 'pdf' + +/** 载荷编码:svg 用 utf8 原文,pdf 用 base64 */ +export type PrintPayloadEncoding = 'utf8' | 'base64' + +/** POST /print 请求体 */ +export interface PrintJobRequest { + /** 任务名(用于打印队列显示) */ + taskName: string + /** 目标打印机名(取自 /printers 的 name;留空由客户端用系统默认) */ + printer: string + /** 载荷格式 */ + format: PrintPayloadFormat + /** 载荷编码 */ + encoding: PrintPayloadEncoding + /** 文档内容:svg=XML 原文;pdf=base64(不含 data: 前缀) */ + content: string + /** 文档总页数 */ + pages: number + /** 打印份数 */ + copies: number + /** 纸张方向 */ + orientation: 'portrait' | 'landscape' + /** 是否双面 */ + duplex: boolean + /** 是否彩色(false = 黑白) */ + color: boolean +} + +/** POST /print 响应体 */ +export interface PrintJobResponse { + ok: boolean + /** 客户端队列任务 ID */ + jobId?: string + /** 服务端消息(失败原因等) */ + message?: string +} + +/* ------------------------------ 错误 ------------------------------ */ + +/** + * 错误分类: + * - `timeout` 请求超时(客户端未响应) + * - `network` 连接失败(服务未启动 / 端口不通 / CORS 拦截) + * - `http` HTTP 非 2xx + * - `parse` 响应不是合法 JSON 或字段缺失 + * - `service` 服务端返回 ok:false + */ +export type PrintClientErrorCode = 'timeout' | 'network' | 'http' | 'parse' | 'service' + +/** 打印客户端统一错误 */ +export class PrintClientError extends Error { + readonly code: PrintClientErrorCode + readonly status?: number + + constructor(code: PrintClientErrorCode, message: string, status?: number) { + super(message) + this.name = 'PrintClientError' + this.code = code + this.status = status + } +} + +/** 把任意异常转成人话(用于 UI 提示) */ +export function describePrintError(err: unknown): string { + if (err instanceof PrintClientError) { + switch (err.code) { + case 'timeout': + return '打印客户端响应超时,请确认服务未卡死' + case 'network': + return '无法连接打印客户端,请确认本机打印服务已启动' + case 'http': + return `打印客户端返回错误(HTTP ${err.status ?? '?'})` + case 'parse': + return '打印客户端返回数据格式异常' + case 'service': + return err.message || '打印客户端拒绝了本次请求' + } + } + return err instanceof Error ? err.message : String(err) +} diff --git a/src/design/composables/usePrinterProbe.ts b/src/design/composables/usePrinterProbe.ts new file mode 100644 index 0000000..de62dcb --- /dev/null +++ b/src/design/composables/usePrinterProbe.ts @@ -0,0 +1,109 @@ +/** + * 打印客户端探测状态 —— 模块级单例,顶栏状态灯与打印弹窗共用一份 + * + * 为什么做成单例: + * - 顶栏打印按钮要常驻显示连接状态;打印弹窗打开时也要拿打印机列表。 + * 两处各自请求会重复打扰本机服务,也会出现状态不同步(顶栏红点 / 弹窗已连接)。 + * - 这里用模块级 ref 共享,一次探测两处同时更新;并发调用合并为同一个 inflight Promise。 + */ +import { computed, ref } from 'vue' +import { + checkHealth, + describePrintError, + listPrinters, + type PrinterHealth, + type PrinterInfo, +} from '@/core/print-client' +import { resolvePrinterBaseUrl } from '@/config/printer' + +/** idle=从未探测 / checking=探测中 / connected=已连接 / disconnected=不可达 */ +export type PrinterProbeState = 'idle' | 'checking' | 'connected' | 'disconnected' + +const state = ref('idle') +const health = ref(null) +const printers = ref([]) +const errorText = ref('') +const baseUrl = ref(resolvePrinterBaseUrl()) +const checkedAt = ref(0) + +let inflight: Promise | null = null + +/** 在线且可用的打印机(离线的仍在列表里,只是不可选) */ +const onlinePrinters = computed(() => printers.value.filter((p) => p.isOnline)) + +/** 默认打印机(服务端标记 isDefault,否则取第一台在线的) */ +const defaultPrinter = computed( + () => printers.value.find((p) => p.isDefault) ?? onlinePrinters.value[0] ?? printers.value[0] ?? null, +) + +/** 一句话状态描述(顶栏 tooltip / 弹窗提示复用) */ +const summary = computed(() => { + switch (state.value) { + case 'idle': + return '打印客户端:未检测' + case 'checking': + return '正在检测打印客户端…' + case 'connected': { + const h = health.value + const v = h?.version ? ` v${h.version}` : '' + return `打印客户端已连接(${h?.app ?? 'OpenPrint'}${v} · ${printers.value.length} 台打印机)` + } + case 'disconnected': + return `打印客户端不可达:${errorText.value || '未知原因'}` + } +}) + +/** + * 执行一次探测:/health 判活 → /printers 取列表。 + * 并发调用共享同一次请求;返回是否连接成功。 + */ +async function probe(): Promise { + if (inflight) return inflight + state.value = 'checking' + errorText.value = '' + const base = resolvePrinterBaseUrl() + baseUrl.value = base + + inflight = (async () => { + try { + health.value = await checkHealth(base) + printers.value = await listPrinters(base) + state.value = 'connected' + return true + } catch (e) { + health.value = null + printers.value = [] + errorText.value = describePrintError(e) + state.value = 'disconnected' + return false + } finally { + checkedAt.value = Date.now() + inflight = null + } + })() + + return inflight +} + +/** 距上次探测超过 ttl(默认 15s)才重新探测,避免频繁打扰本机服务 */ +async function probeIfStale(ttlMs = 15000): Promise { + if (state.value === 'connected' && Date.now() - checkedAt.value < ttlMs) return true + if (state.value === 'checking' && inflight) return inflight + return probe() +} + +export function usePrinterProbe() { + return { + state, + health, + printers, + onlinePrinters, + defaultPrinter, + errorText, + baseUrl, + checkedAt, + summary, + probe, + probeIfStale, + } +} diff --git a/src/design/modals/PrintDialog.vue b/src/design/modals/PrintDialog.vue index ae72e0d..8b9a9bc 100644 --- a/src/design/modals/PrintDialog.vue +++ b/src/design/modals/PrintDialog.vue @@ -1,13 +1,18 @@