集成

从 S3 或 Azure Blob 打印 ZPL——并将已打印的标签归档到其中

打印文件本来就存放在对象存储中:来自物流服务商的承运商标签、来自 ERP 的预渲染批次、为满足保留规定而保存的归档。本指南涵盖两个方向——从存储桶中打印 ZPL,以及把已打印的 ZPL 写回存储桶。

打印文件本来就存放在对象存储中:来自物流服务商的承运商标签、来自 ERP 的预渲染批次、为满足保留规定而保存的归档。本指南涵盖两个方向——从存储桶中打印 ZPL,以及把已打印的 ZPL 写回存储桶。

以下内容均适用于 Amazon S3Azure Blob Storage。由于 S3 接口已标准化,MinIO、Cloudflare R2、Wasabi、Backblaze B2 和 Ceph 同样可用。

创建存储连接

数据流 → 存储 → 新建连接 下只需创建一次连接。名称 很重要:之后消息就是通过它来指定该连接的。

字段S3Azure Blob
存储桶 / 容器存储桶名称容器名称
区域例如 eu-central-1不使用
终端节点AWS 留空,否则例如 https://minio.example.com不使用
路径样式使用 MinIO 和 Ceph 时开启不使用
前缀可选,例如 zpl/可选
凭据AccessKey=…;SecretKey=…连接字符串或容器 SAS URL

凭据以 AES 加密形式存储在平台数据库中。它们永远不会回传到浏览器——表单只显示凭据是否存在。使用 S3 时也可以完全不填:此时将使用标准的 AWS 凭据链,例如运行环境的 IAM 角色。

测试 会在打印任何内容之前验证存储桶和权限是否正确。

方向 1:从存储桶打印 ZPL

总线消息可以携带成品 ZPL。但对于大文件来说这很不方便——许多 broker 会限制消息大小,而嵌入图形的标签很快就会变大。更好的做法是:消息只引用文件。

{
  "schemaVersion": 1,
  "printer": "rp:7",
  "zplRef": { "storage": "archive", "key": "orders/4711.zpl" }
}

storage 是你的连接名称,key 是其中的对象键。已配置的前缀会被加在前面:使用前缀 zpl/ 时,上面的示例读取的是 zpl/orders/4711.zpl

文件在打印时获取,而不是在收到消息时。名称只在你自己或你公司的范围内解析——即使有人知道别人连接的名称,也无法通过消息访问该连接。

方向 2:存储已打印的 ZPL 并发出通知

反方向称为输出目标。它包含打印成功后运行的三个步骤,每个步骤均可单独开启:

1. 存储——已打印的 ZPL 以文件形式写入存储连接。

2. 通知——向七种总线中的任意一种发送消息。

3. 触发——向你自己的 URL 发送经 HMAC-SHA256 签名的 HTTP POST 请求。

文件名由模板生成。所有时间均为 UTC:

模板:{yyyy}/{MM}/{dd}/{subscription}/{id}.zpl
结果:2026/09/09/Outbound/8f3c1e2a9b7d4c0e.zpl

可用的占位符有 {yyyy} {MM} {dd} {HH} {mm} {ss}{subscription}{printer}{key}(总线消息的键),以及为每张标签生成唯一 ID 的 {id}

通知和 webhook 接收相同的 payload:

{
  "schemaVersion": 1,
  "event": "label.printed",
  "utc": "2026-09-09T12:34:56.7890000Z",
  "subscription": "Outbound",
  "printer": "rp:7",
  "storageKey": "zpl/2026/09/09/Outbound/8f3c1e2a.zpl",
  "storageUrl": "https://archive.s3.eu-central-1.amazonaws.com/zpl/2026/09/09/...",
  "zplBytes": 812,
  "zpl": null
}

只有在你明确要求时,才会包含 ZPL 本身。否则该字段为 null,有 URL 就足够了——这样消息可以保持精简。

这有什么用

  • 保留规定。 发货标签属于业务记录。在你自己的存储桶中归档,并遵循服务商的生命周期规则,无需第二套系统即可满足要求。
  • 无需重新渲染即可重新打印。 打印过的内容会逐字节保留下来。重新打印用的是同一个文件,而不是重新渲染。
  • 移交给下游系统。 webhook 会通知 ERP 第 12 箱已贴好标签,同时附上该记录的链接。

存储故障绝不会中断打印

存储、通知和 webhook 全部在打印之后执行。即使存储桶暂时无法访问,标签照样会打印;错误会以文本形式记录在订阅日志中。归档不应拖慢业务运转。

输出目标随时可以通过 测试 进行试运行:它会存储一个示例 ZPL,并触发通知和 webhook,但不会打印任何内容。