You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Chrome中无需NodeJS中间件,通过WebSocket连接Zebra打印机发送ZPL命令?

可行方案(Chrome环境下无NodeJS中间服务器发送ZPL到Zebra ZD420)

首先明确:你的WebSocket代码失败是因为Zebra打印机的9100端口是原始TCP字节流服务,不支持WebSocket协议的握手流程,直接用WS连接必然失败。下面是几个无需中间服务器的可行方案:

方案1:Zebra官方Browser Print工具(推荐)

这是Zebra专为浏览器打印设计的官方方案,完美支持Chrome,无需自行处理TCP逻辑:

  1. 安装对应操作系统的Zebra Browser Print客户端及Chrome插件
  2. 在网页中引入官方JS库
  3. 通过API搜索网络中的ZD420打印机,直接发送ZPL命令

示例核心代码:

// 初始化Browser Print
ZebraBrowserPrint.initialize(function() {
  // 搜索网络打印机
  ZebraBrowserPrint.getPrinters(function(printers) {
    const targetPrinter = printers.find(p => p.name.includes("ZD420"));
    if (targetPrinter) {
      // 发送ZPL命令
      ZebraBrowserPrint.sendZplOverNetwork(targetPrinter.address, "^XA^FO50,50^A0N,50,50^FDHello ZPL^FS^XZ", function(success) {
        console.log(success ? "打印成功" : "打印失败");
      });
    }
  });
});

方案2:Chrome扩展+Native Messaging(自定义轻量方案)

Chrome扩展本身无法直接发起原始TCP连接,但可通过Native Messaging调用本地轻量脚本(Python/Go均可)完成TCP通信,无需搭建服务器:

  1. 编写本地TCP客户端脚本(以Python为例):
import sys
import socket
import json

# 读取Chrome扩展发来的JSON格式消息
message = json.load(sys.stdin)
zpl_content = message["zpl"]

# 连接打印机并发送ZPL
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.0.99", 9100))
s.send(zpl_content.encode('utf-8'))
s.close()

# 向扩展返回执行结果
json.dump({"status": "success"}, sys.stdout)
sys.stdout.flush()
  1. 配置Chrome扩展的manifest.json,添加nativeMessaging权限并声明原生应用ID
  2. 在系统中注册原生应用的manifest文件,关联上述Python脚本
  3. 扩展端通过chrome.runtime.sendNativeMessage将ZPL命令发送给脚本

方案3:USB连接时使用Chrome Serial API(备选)

若打印机通过USB连接电脑,可直接用Chrome的Serial API与打印机通信:

// 请求串口权限
chrome.serial.getDevices(function(devices) {
  const printerPort = devices.find(d => d.displayName.includes("Zebra"));
  if (printerPort) {
    chrome.serial.connect(printerPort.path, {bitrate: 9600}, function(connectionInfo) {
      // 发送ZPL命令
      const zpl = "^XA^FO50,50^A0N,50,50^FDHello ZPL^FS^XZ";
      const buffer = new TextEncoder().encode(zpl);
      chrome.serial.send(connectionInfo.connectionId, buffer, function(sendInfo) {
        console.log("已发送字节数:", sendInfo.bytesSent);
        chrome.serial.disconnect(connectionInfo.connectionId);
      });
    });
  }
});

内容的提问来源于stack exchange,提问作者Eduardo Iglesias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:25:13