远程打印配置指南

适用场景

工作原理

服务端你需要做什么

npm API(printHtml 等)与远程打印的关系

标准消息格式(固定,不可改结构)

建议与客户端「测试任务」保持一致的 JSON 结构,服务端按下列字段组织即可:

{
  "id": "uuid",
  "timestamp": 1710000000000,
  "type": "printHtml",
  "content": "<div>Shipping label #10086</div>",
  "pdfOptions": {
    "paperFormat": "A4",
    "margin": { "top": "20px", "bottom": "20px", "left": "20px", "right": "20px" },
    "printBackground": false
  },
  "printOptions": { "paperFormat": "A4", "printerName": "Default printer" },
  "extraOptions": { "requestTimeout": 15 }
}

客户端配置

在客户端 UI「远程打印配置」中选择方式并填写 URL,配置持久化到本地:

配置操作说明
保存远程打印配置Body: { method: "websocket"|"http", url: "..." }
读取当前配置返回已保存的监听方式与 URL
清空配置停止远程监听并清除本地记录

内置测试地址(验证配置是否生效):
WebSocket:ws://127.0.0.1:{port}/websocket/remotePrintTest(每 8 秒推送测试任务)
HTTP:http://127.0.0.1:{port}/api/test/remotePrintTest

WebSocket 模式

客户端连接你配置的 WS 地址,收到 JSON 任务后进入本地打印流程;网络异常时会按策略自动重连。

Node.js 服务端推送示例:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 9000 });

function buildTask() {
  return {
    id: crypto.randomUUID(),
    timestamp: Date.now(),
    type: 'printHtml',
    content: '<div>WMS label</div>',
    pdfOptions: { paperFormat: 'A4' },
    printOptions: { paperFormat: 'A4' },
    extraOptions: { requestTimeout: 15 }
  };
}

wss.on('connection', (ws) => {
  ws.send(JSON.stringify(buildTask()));
});

客户端配置 URL 填 ws://your-server:9000。无任务时不要推送空消息。

HTTP 轮询模式

客户端按固定间隔请求你配置的 URL,解析统一响应格式:

// No job…

仅当响应中的任务对象包含必要字段(如 id、timestamp、type)时才执行打印。

Express 服务端示例:

const express = require('express');…

客户端配置 URL 填 http://your-server:8080/api/print/pull

远程打印 vs 本地 npm API

  • 远程模式:固定格式 JSON → 自建接收/存储服务 → 暴露消费接口 → 客户端填 URL 出纸(不调 npm API
  • 本地模式:Vue/React 集成 npm,用户点击后浏览器调用 webPrintPdf.printHtml(可用来对照 JSON 字段,但不是远程链路)
  • 可并存:无人值守走远程入队 + 客户端消费接口;仓管补打等手动场景仍可用 npm 本地打印。
免费下载客户端 开发文档