zplCloud Blog

GS1 Sunrise 2027:收银台迎来二维条码 – ZPL 标签现在需要什么

到 2027 年底,全球零售收银台应能读取 GS1 DataMatrix 和带 GS1 Digital Link 的 QR 码。EAN-13 会保留。本文给出每条规则及其出处、经过测试的 ^BQ 和 ^BX ZPL 示例,以及自动迁移现有模板的方法。

11 分钟阅读 zplCloud Team

到 2027 年底,收银台要能读二维条码

“Sunrise 2027. 2D at the checkout.”横幅,含两张由 zplCore 渲染的真实产品标签:前面是同一张标签,带 EAN-13 和一个附加的 GS1 Digital Link QR 码,后面是目前只带 EAN-13 的版本,下方是一轮初升的太阳

到 2027 年底,全球零售收银扫描器除了 EAN/UPC 之外,还应能读取三种二维条码:GS1 DataMatrix、带 GS1 Digital Link 的 QR 码,以及带 GS1 Digital Link 的 Data Matrix。GS1 US 称之为“Sunrise 2027”,GS1 全球层面称之为“Ambition 2027”。EAN-13 会保留,也没有人必须印刷二维条码。如果要加,二维条码应放在一维条码旁边,使用相同的 GTIN,并遵守 GS1 General Specifications 中关于 X尺寸、空白区和摆放位置的规则。本文列出每条规则及其出处,给出经过测试的 ^BQ 和 ^BX ZPL 示例、一张改造前后的标签对比,以及自动检查和迁移现有模板的方法。

简而言之: 2027 年是零售扫描器的目标,不是 EAN 的停用日期。过渡期内,二维条码是额外加到包装上的,绝不能代替一维条码。对 203 dpi 的 ZPL 而言,这意味着:模块尺寸 4 至 7 点,QR 码四周留 4 个模块的空白区,与 EAN 中心的距离不超过 50 mm。

Sunrise 2027 是什么,不是什么

最清楚的表述来自 GS1 的扫描器就绪页面:行业设定的目标是,到 2027 年底,所有零售销售点(POS)系统除了现有的一维条码之外,还应能够读取和处理一组采用 GS1 标准的指定二维条码。全球实施指南(Release 1.1.0,2025 年 12 月)明确了最低要求:POS 必须能从任何符合 GS1 标准的一维或二维条码中识别并解码 GTIN,只响一声,并传输这一个 GTIN。这就是扫描模式 1,即 2027 年的最低要求。

获准用于收银台的二维条码恰好有三种:

二维条码内容(语法)码制标识符
GS1 DataMatrix带 FNC1 的 GS1 元素串语法,例如 (01)…(17)…(10)…]d2
带 GS1 Digital Link 的 QR 码遵循 GS1 Digital Link URI 语法的网址]Q1
带 GS1 Digital Link 的 Data Matrix遵循 GS1 Digital Link URI 语法的网址]d1

Sunrise 2027 不意味着:

  • EAN-13 不会消失。 全球指南指出,EAN/UPC 和 GS1 DataBar 等一维条码“不会消失,只要仍有用途,就会与二维条码共存”。GS1 Germany、GS1 Austria 和 GS1 Switzerland 的说法相同。
  • 2027 年没有人必须印刷二维条码。 GS1 Germany 表示,想继续只用一维条码的企业无需添加二维条码。GS1 US 强调,“不必在该日期之前实现二维条码的全部功能”。
  • 二维条码暂时还不能取代一维条码。 GS1 General Specifications 26.0 第 4.15.4 节规定:GS1 DataMatrix、QR 码或带 Digital Link 的 Data Matrix 必须(SHALL)与 EAN/UPC 或 GS1 DataBar 一起使用。指南给出了门槛:只有当 90% 的 POS 扫描方案能够处理符合 GS1 标准的二维条码时,才可以去掉一维条码。对此没有设定日期。
  • 这不是法律。 GS1 制定的是供自愿采用的标准。义务只来自零售商的要求,或来自各领域自身的法规,例如医疗保健。

GS1 Germany 一份较早的 FAQ PDF(2022 年 11 月版)还写道,从 2028 年起品牌所有者可以在 EAN 和二维条码之间选择。如今的文本把去掉一维条码与 90% 门槛挂钩,而不是与某个年份挂钩。以 General Specifications 26.0 和指南 1.1 为准。

时间线与里程碑

时间内容来源
2021GS1 全球大会就 POS 二维迁移作出决定GS1 Switzerland,FAQ
2022 年 2 月德语指南“Migration auf 2D Codes am POS”,第 1.1 版(GS1 AT 和 GS1 DE)GS1 Austria
2025 年 11 月实施指南德语译本,第 1.1 版GS1 Germany
2025 年 12 月2D Barcodes at Retail Point-of-Sale Implementation Guideline,Release 1.1.0GS1
2026 年 1 月GS1 General Specifications Release 26.0,含适用于 POS 二维条码的表 5-46GS1
2026 年 7 月立场文件 2.0.0:自有品牌和店内贴标商品使用单一二维条码GS1
2026 年 8 月GS1 Digital Link URI Syntax 1.7.0GS1
2027 年底目标:POS 能从全部三种二维条码中读取 GTIN(至少模式 1)GS1
此后品牌商品只用二维条码,最早要等到 90% 的 POS 扫描方案支持二维条码GS1 指南 1.1,第 4.1 节

GS1 维护一份持续更新的清单,扫描器、条码检测仪、打印机和条码软件的厂商在其中报告各自对照“2D capable”标准的状态;撰写本文时,清单日期为 2026 年 10 月 8 日。其中列出的打印机厂商包括 Zebra 和 TSC。

各地区现状:美国、DACH 和世界其他地区

美国。 GS1 US 以“Sunrise 2027”推进这一主题,并建议采用“爬、走、跑”(crawl-walk-run)的分步方法。对品牌方:先在现有包装上添加二维条码,并把现有的 QR 码升级为带 GTIN 的 GS1 Digital Link;然后加入变体、生产日期或有效期等数据;最后利用二维条码与消费者互动。对零售商:先安装支持 Sunrise 的扫描器,在 POS 读取二维条码并提取 GTIN;然后为自有品牌加上二维条码;最后优化安全、追溯和库存。在 GS1 US 2025 年的一项消费者调查中,79% 的受访者表示更可能购买带有可扫描 QR 码、能提供额外产品信息的商品。

德国。 GS1 Germany 把过渡期内的双重标识称为“in der Regel sinnvoll beziehungsweise erforderlich”(通常合理或必要),因为并非所有收银系统都已能处理二维条码。它举出 dm 和 Beiersdorf 作为首个 POS 案例。GS1 Germany 的一份 5 点检查清单建议,从一个用例和一个产品组开始,并定期测试打印、可扫描性和系统集成。

奥地利。 GS1 Austria 写道,二维条码将补充而不是取代传统的一维条码,并且在当前过渡阶段,二维条码旁边必须有一维条码。二维条码只能由基于图像的扫描器读取,传统激光扫描器无法读取。

瑞士。 GS1 Switzerland 表示,EAN/UPC 条码在 2027 年之后很长时间内仍会留在零售业。关于收银技术,它指出瑞士大多数 POS 系统已经能扫描二维条码,往往只需一次软件更新。

其他地区。 GS1 指出,这一转变在全球各地按不同时间表逐步推进。其案例研究包括澳大利亚的 Woolworths、巴西的熟食店 Parla Deli 和泰国的 7-Eleven。

涉及哪些人

对象要做什么
品牌所有者决定是否使用二维条码、在哪些产品上使用哪一种,确定 Digital Link 域名,调整包装和标签。
零售商将扫描器软件配置为模式 1 至 3 之一,让 POS 软件为附加数据做好准备,商品上有两个条码时每件只响一声。
标签打印与 ITZPL 模板、电子秤和生鲜标签、打印机分辨率、批次和日期的数据来源。
软件和打印机厂商GS1“2D capable”标准:]d2、]d1、]Q1,以及符合符号规范表的 X尺寸、空白区和打印质量。
医疗保健与制药继续使用 GS1 DataMatrix,见下文。

店内贴标商品是见效最快的抓手。 GS1 2026 年 7 月的立场文件指出,熟食、烘焙产品和自有品牌是零售商现在就可以只用一个二维条码的领域,因为标签、扫描器和 POS 都由零售商自己掌控。前提是至少达到扫描模式 2。这些标签通常来自电子秤和标签打印机,而且常常是 ZPL。

医疗保健。 早在 2000 年代初,该行业就选择了 GS1 DataMatrix 作为唯一的二维条码;根据指南,对于在零售收银台扫描的医疗保健产品,它也是首选的二维条码。在医疗保健领域,GS1 Digital Link 不会编码进二维条码。在美国,FDA 要求医疗器械具备 UDI,由器械标识符和生产标识符(批号、序列号、有效期或生产日期)组成,需同时以明文和机器可读形式呈现。对于处方药,DSCSA 规定了产品标识符(基于 NDC 的编号,含序列号、批号和有效期),以二维 Data Matrix 条码印在包装上。Sunrise 2027 不改变上述任何义务。

二维条码给收银台带来什么

EAN-13 只承载 GTIN。二维条码还可以承载批次/批号、有效期或保质期以及序列号。GS1 指南列出的用例包括:

  • 在收银台阻止销售过期产品,因为有效期就在条码里。
  • 定向召回,精确到批次,而不是整个产品。
  • 减少食品浪费,并按日期自动降价。据 GS1 Germany 介绍,Woolworths 报告食品浪费最多减少了 40%。
  • 为消费者提供信息: 带 GS1 Digital Link 的 QR 码可以用手机自带相机打开网页,同时也能在收银台扫描。
  • 数字产品护照: 据欧盟委员会介绍,QR 码等数据载体把实物产品与其 DPP 关联起来;对于某些电池,DPP 将于 2027 年 2 月 18 日成为强制要求,纺织品、铝和轮胎的授权法案计划于 2027 年出台,之后至少有 18 个月的过渡期。详见我们的文章 GS1 QR 码与数字产品护照:一个码,同时服务收银台和顾客。

GS1 Digital Link URI 的结构

https://example.com/01/09506000134352/10/L2610A?15=271231
└──────┬──────────┘└──────┬─────────┘└───┬────┘└───┬────┘
   域名 (+ 路径)      主键              限定符     属性
                      (01) GTIN-14      (10) 批次  (15) 保质期

GS1 Digital Link URI Syntax 1.7.0(2026 年 8 月)中的规则:

  • 任意域名。 域名和 /01/ 之间可以加入任意数量的自定义路径段,例如 https://example.com/gs1/01/…。GS1 建议品牌所有者使用自己的域名;https://id.gs1.org 是 GS1 的参考域名。
  • GTIN 始终为 14 位。 自 1.4.0 版起,GTIN-13 要在前面补一个零:EAN 9506000134352 变为 /01/09506000134352。
  • 键限定符放在路径中,顺序固定: 对 GTIN 而言依次为 /22/(消费品变体)、/10/(批次/批号)、/21/(序列号)。/21/…/10/… 无效。
  • 属性放在查询字符串中: 15(保质期)或 17(有效期)等日期写成 ?15=271231。
  • 没有简写形式。 像用 /gtin/ 代替 /01/ 这样的“convenience alphas”已在 1.3.0 版中删除。
  • 不压缩。 根据 General Specifications 表 5-46,在收银台使用的 URI 必须采用未压缩形式。
URI是否有效?
https://example.com/01/09506000134352有效,仅含 GTIN
https://example.com/gs1/01/09506000134352/10/L2610A?15=271231有效,自定义路径、批次、保质期
https://example.com/01/9506000134352无效,GTIN 只有 13 位
https://example.com/01/09506000134352/21/0001/10/L2610A无效,批次必须位于序列号之前
https://example.com/gtin/09506000134352无效,简写形式已删除

GS1 指南中的一个提示:在 QR 码中,数字和大写字母比小写字母和特殊字符占用的空间更少。如果批号由你自己分配,请只用数字或大写字母。

GS1 DataMatrix、Data Matrix 还是 QR 码?

三个由 zplCore 渲染、内容和模块尺寸相同的二维条码:18 × 18 模块的 GS1 DataMatrix、26 × 26 模块的带 GS1 Digital Link 的 Data Matrix,以及 33 × 33 模块的带 GS1 Digital Link 的 QR 码

上面三个条码都承载 GTIN、批次和保质期,在 203 dpi 下以每模块 4 点(0.50 mm)打印。GS1 DataMatrix 为 18 × 18 模块,即 9.0 mm。带 Digital Link 的 Data Matrix 需要 26 × 26 模块(13.0 mm),QR 码需要 33 × 33 模块(16.5 mm)。本文中的每个条码我们都用 zplCore 和 Labelary 渲染,并用 ZXing 解码;两个渲染器返回的数据和位置相同。

对比项GS1 DataMatrixQR 码 + Digital LinkData Matrix + Digital Link
手机相机可打开网页否,需要应用是否,需要应用
相同内容下的尺寸最小最大小
医疗保健全球获准不适用不适用
POS 扫描器通常只需启用需要软件更新需要软件更新

结论:希望消费者扫描时,用带 Digital Link 的 QR 码。空间紧张、不需要网页链接或产品属于医疗保健用品时,用 GS1 DataMatrix。带 Digital Link 的 Data Matrix 是折中方案,适合需要网页链接的小包装。

打印质量:X尺寸、空白区、摆放位置、HRI

尺寸规定见 GS1 General Specifications,Release 26.0(2026 年 1 月),第 5.12.3.1 节,表 5-46“Symbol specification table 1 addendum 2 for 2D barcodes”。它适用于在零售 POS 扫描的贸易项目:

二维条码X尺寸最小值目标值最大值空白区最低质量
GS1 DataMatrix(ECC 200)0.396 mm0.495 mm0.990 mm四边各 1X1.5/12/660
Data Matrix(GS1 Digital Link URI)0.396 mm0.495 mm0.990 mm四边各 1X1.5/12/660
QR 码(GS1 Digital Link URI)0.396 mm0.495 mm0.990 mm四边各 4X1.5/12/660

因此,二维条码的模块是一维条码 X尺寸的 1.5 倍。对于还要在一般分销环节扫描的商品,适用表 5-49(符号规范表 3 附录 1),范围为 0.743 至 0.990 mm。

在 ZPL 中,X尺寸是整数个点。由此得到以下允许的模块尺寸(^BQ 的第 3 个参数,^BX 的第 2 个参数):

打印机分辨率1 点允许的模块尺寸接近 0.495 mm 目标值
203 dpi(8 点/mm)0.125 mm4 至 7 点4 点 = 0.500 mm
300 dpi(12 点/mm)0.085 mm5 至 11 点6 点 = 0.508 mm
600 dpi(24 点/mm)0.042 mm10 至 23 点12 点 = 0.508 mm

一个常见错误藏在旁边的一维条码里:表 5-44 规定 EAN-13 的最小值为 0.264 mm。^BY2 在 203 dpi 下只有 0.250 mm,低于该最小值;^BY3(0.375 mm)才是第一个符合要求的设置。在 300 dpi 下,^BY3(0.254 mm)太窄,^BY4(0.339 mm)符合要求。最小条高也随之按比例变化:0.330 mm 时为 22.85 mm,因此在 203 dpi 下使用 ^BY3 时约为 26 mm,即 208 点。

更多规则:

  • 空白区: Data Matrix 四周 1 个模块,QR 码四周 4 个模块。ZPL 不会绘制空白区,因此该区域必须保持空白,不能有文字和框线。
  • 摆放位置: GS1 测试表明,二维条码应位于距一维条码中心 50 mm 以内,收银台才能达到每分钟 40 至 70 件商品。
  • 相同 GTIN: 一件商品上的所有条码必须编码相同的 GTIN(第 4.15.1 节)。
  • HRI: 二维条码如果位于带供人识读字符(HRI)的 EAN-13 旁边,就不需要自己的 HRI(第 4.14.2 节)。如果它是唯一的条码,则显示 (01) 和 14 位 GTIN。
  • 检测: 质量按 ISO/IEC 15415 测量。1.5/12/660 表示总体等级至少为 1.5,测量孔径参考号 12(0.30 mm),波长 660 nm。

ZPL 示例,已用 zplCore 和 Labelary 测试

带 GS1 Digital Link 的 QR 码(^BQ)

^XA
^PW406
^LL406
^FO40,40^BQN,2,4^FDMA,https://example.com/01/09506000134352/10/L2610A?15=271231^FS
^XZ

^BQN,2,4 表示正常方向、QR 模型 2、每模块 4 点(203 dpi 下为 0.50 mm)。^FD 中的前两个字符是纠错等级(M = 15%)和输入模式(A = 自动)。纠错等级越高,符号越大;GS1 把选择权留给具体用例。该符号解码后得到码制标识符 ]Q1 和这个完全相同的 URI。关于位置的说明:在 zplCore 和 Labelary 中,QR 码的起点位于 ^FO 坐标下方,偏移量为当前 ^BY 条高(未设 ^BY 时为 10 点),摆放时请考虑这一点。

带 FNC1 的 GS1 DataMatrix(^BX)

^XA
^PW406
^LL406
^FO40,40^BXN,4,200,,,,_^FD_101095060001343521527123110L2610A^FS
^XZ

^BXN,4,200,,,,_ 表示每模块 4 点、质量 200(ECC 200,GS1 要求),并以 _ 作为转义字符。开头的 _1 生成 FNC1,正是它把 Data Matrix 变成 GS1 DataMatrix。解码结果:]d2,内容为 (01)09506000134352(15)271231(10)L2610A。

这个顺序是有意安排的。GTIN(01)和日期(15)是预定义长度,不需要分隔符。批次(10)是可变长度,放在最后,因此也不需要分隔符。如果可变长度字段位于中间,则在其后加一个 _1 作为分隔符:

^FO40,40^BXN,4,200,,,,_^FD_1010950600013435210L2610A_115271231^FS

这样得到的数据相同,但符号是 20 × 20 模块,而不是 18 × 18 模块。我们自己测试时犯过一个错误:在 GTIN 后直接写 _10L2610A,得到的是 FNC1 加“0L2610A”,而不是批次。预定义长度的字段后面永远不加 FNC1。

如果没有质量参数 200,^BX 会生成旧的 ECC 000 类型,这对 GS1 来说是错误的。带 Digital Link 的 Data Matrix(]d1)完全不需要 FNC1:^BXN,4,200^FDhttps://example.com/01/…^FS。

改造前后:同一张标签加上二维条码

原始标签,4 × 2 英寸,203 dpi,只有 EAN-13:

由 zplCore 渲染的 4 × 2 英寸产品标签:ACME FOODS、Oat Drink Barista 1 L、批号 L2610A、保质期至 31.12.2027,下方只有一个 GTIN 为 9506000134352 的 EAN-13
^XA
^CI28
^PW812
^LL406
^FO40,28^A0N,26,26^FDACME FOODS^FS
^FO40,60^A0N,48,48^FDOat Drink Barista 1 L^FS
^FO40,118^A0N,28,28^FDLOT L2610A   BEST BEFORE 31.12.2027^FS
^FO60,150^BY3,3,1^BEN,208,Y,N^FD950600013435^FS
^XZ

用 zplCore 迁移之后(命令见下文),EAN-13 右侧多了一个带 GS1 Digital Link 的 QR 码,包含相同的 GTIN 以及批次和保质期:

同一张由 zplCore 渲染的产品标签迁移后的样子:左侧的 EAN-13 保持不变,右侧是一个带 GS1 Digital Link URI https://example.com/01/09506000134352/10/L2610A?15=271231 的 QR 码
^FO60,150^BY3,3,1^BEN,208,Y,N^FD950600013435^FS
^FX zplCore GS1 2D migration
^BY3,3,10^FO394,243^BQN,2,4^FDMA,https://example.com/01/09506000134352/10/L2610A?15=271231^FS^BY3,3,1

QR 码为 16.5 mm 见方,每模块 4 点(0.500 mm),空白区 16 点。其中心距 EAN-13 中心约 33 mm,远在 50 mm 以内。在 zplCore 和 Labelary 中,两个条码都返回相同的 GTIN 09506000134352。GTIN 9506000134352 是 GS1 的示例 GTIN,example.com 是保留的占位域名。

用 zplCore 检查和迁移模板

zplCore 是 zplCloud 背后的 ZPL 引擎。它为 Sunrise 2027 提供两个工具:一个对照 GS1 规则的预检,以及一个为现有 ZPL 标签添加二维条码的迁移助手。两者都会渲染标签并测量打印出来的几何尺寸,而不只是读取文本。文档见 合规预检 和 GS1 Digital Link 与 Sunrise 2027 迁移。

命令行预检

一张故意出错的标签:EAN-13 使用 ^BY2,QR 码每模块 3 点,GTIN 只有 13 位,序列号位于批次之前:

^FO60,150^BY2,3,1^BEN,150,Y,N^FD950600013435^FS
^FO330,170^BQN,2,3^FDMA,https://example.com/01/9506000134352/21/0001/10/L2610A^FS

预检发现:

$ zplcore comply bad.zpl --pack sunrise --dpi 203
bad.zpl:8:1: error ZPL3210: label 1 ^BE: ^BE encodes GTIN 09506000134352, ^BQ encodes 9506000134352. [GS1 General Specifications 26.0 §4.15.1 rules 2 and 8]
bad.zpl:9:1: error ZPL3202: label 1 ^BQ: Digital Link URI "https://example.com/01/9506000134352/21/0001/10/L2610A": key qualifiers of (01) must be in the order /22, /10, /21 or /235 (each optional, alternatives not mixed). [GS1 Digital Link URI Syntax 1.7.0 (gs1path grammar, qualifier order, 14-digit GTIN, percent-encoding); GS1 General Specifications 26.0 §3, §7.9]
bad.zpl:9:1: error ZPL3202: label 1 ^BQ: Digital Link URI "https://example.com/01/9506000134352/21/0001/10/L2610A": the GTIN has 13 digits; a GS1 Digital Link URI needs 14 (pad GTIN-8/12/13 with leading zeros). [GS1 Digital Link URI Syntax 1.7.0 (gs1path grammar, qualifier order, 14-digit GTIN, percent-encoding); GS1 General Specifications 26.0 §3, §7.9]
bad.zpl:9:1: error ZPL3207: label 1 ^BQ: QR Code (Digital Link) X-dimension 0.375 mm (3 dots at 203 dpi) is outside 0.396–0.99 mm. [GS1 General Specifications 26.0 §5.12.3.1 Table 5-46]
    fix: Use a module size of 4–7 dots at 203 dpi.
1 label(s) at 203 dpi, packs sunrise GenSpecs 26.0 / DL 1.7.0: 4 error(s), 0 warning(s), 0 info(s). Pre-check only, not a certification.

sunrise 检查包不会报告过窄的 EAN-13,因为它检查的是二维条码一侧;一维条码由表 5-44 规定(见上文)。使用 --annotate 时,zplCore 会把检查结果直接画在标签上:

由 zplCore 标注的标签:EAN-13 标记了规则 ZPL3210,尺寸过小的 QR 码标记了规则 ZPL3202 和 ZPL3207

sunrise 检查包涵盖 13 条规则,其中包括:存在承载 GTIN 的二维载体、Digital Link 语法、ECC 200、符合表 5-46 的 X尺寸、空白区、一维条码仍然存在、所有条码中的 GTIN 相同,以及符号被裁切或被叠印。顺便一提,上面的改造前标签会报告一个错误(ZPL3201,没有二维载体),因为该检查包检查的是二维就绪情况。只有 EAN-13 的标签按 GS1 规则仍然有效。使用 --format sarif 时,检查结果会进入 GitHub 代码扫描,退出码 1 会中止 CI 流水线。

命令行迁移

$ zplcore gs1 migrate before.zpl --domain https://example.com --add 10=L2610A --add 15=271231 -o after.zpl
label 1: migrated – added a QR Code with GS1 Digital Link URI with GTIN 09506000134352 right of the EAN-13 (^BE, line 8), bottom-aligned
  source: EAN-13 ^BE (line 8), GTIN 09506000134352
  added: QR Code with GS1 Digital Link URI at x=394 y=253 dots (49.3 / 31.7 mm), 132 × 132 dots (16.5 × 16.5 mm), module 4 dots = 0.500 mm, quiet zone 16 dots
  placement: right of the EAN-13 (^BE, line 8), bottom-aligned
  uri: https://example.com/01/09506000134352/10/L2610A?15=271231
  data: (01)09506000134352(15)271231(10)L2610A
  zpl: ^BY3,3,10^FO394,243^BQN,2,4^FDMA,https://example.com/01/09506000134352/10/L2610A?15=271231^FS^BY3,3,1
sunrise pre-check of the migrated ZPL: 0 error(s), 0 warning(s), 0 info(s)
result: ok – 1 of 1 label(s) migrated, 0 counting sunrise error(s)
GS1 2D migration assistant (pre-check, not a certification): verify the printed label with a barcode verifier and your GS1 Member Organisation or retailer.

助手从 EAN-13 中读取 GTIN。在这张标签上,批次和保质期只以文本形式印出,因此用 --add 添加;如果是 GS1-128 或 GS1 DataBar Expanded,它会自动接管这些数据。如果找不到留有空白区的空闲区域,它不做任何修改,并报告所需空间;--extend-label 则会改为加长标签。--carrier datamatrix 会添加 GS1 DataMatrix 而不是 QR 码。

在 C# SDK 中实现相同功能

using ZplCore.Barcodes;
using ZplCore.Compliance;
using ZplCore.Tools;

var report = ZplCompliance.Check(zpl, CompliancePacks.Sunrise2027, new ComplianceOptions { Dpi = 203 });
foreach (var f in report.Findings)
    Console.WriteLine(f); // label 1: ZPL3201 error: No GS1 DataMatrix or QR Code / Data Matrix with GS1 Digital Link URI carrying the GTIN.

var options = new Gs1MigrationOptions
{
    Carrier = Gs1MigrationCarrier.QrCodeDigitalLink, // 或 DataMatrixElementString
    DigitalLinkStem = "https://example.com",         // 你的域名,否则为 https://id.gs1.org
    Dpi = 203,
};
options.AdditionalElements.Add(new Gs1Element("10", "L2610A"));
options.AdditionalElements.Add(new Gs1Element("15", "271231"));

var migration = ZplGs1Migration.Migrate(zpl, options);
File.WriteAllText("after.zpl", migration.MigratedZpl);
Console.WriteLine(migration.ToText()); // 摆放位置以及对结果的 sunrise 预检

我们用改造前的标签运行了这段代码,输出与上面的命令行一致。

重要: zplCore 提供的是预检和迁移助手,不是认证。报告为空只表示没有触发任何规则。成品标签的打印质量要用条码检测仪测量;批准则来自零售商或你所在的 GS1 成员组织。

在 zplCloud 中无需代码

无需安装,在浏览器中即可使用免费工具 Sunrise 2027 迁移:粘贴含 EAN/UPC、GS1-128、ITF-14 或 GS1 DataBar 的 ZPL 标签,GTIN 连同批号、有效期和序列号会写入带 GS1 Digital Link 的 QR 码或 GS1 DataMatrix。工具会把条码连同空白区放到空闲区域,再按 Sunrise 2027 规则重新检查结果,并并排显示修改前后的标签。

在 zplCloud 设计器中,每个条码元素都有一个 GS1 区域:选择应用标识符、绑定值、为 QR 码选择 Digital Link;编辑器会自动放置分隔符。对于单个条码,可以使用免费工具 GS1 AI QR 码转 ZPL 和 GS1 AI DataMatrix 转 ZPL,检查条码 则用于检查已打印的条码。每个应用标识符及其格式和含义都收录在 GS1 应用标识符数据库 中。

团队检查清单

  • 盘点现状: 哪些模板带有 EAN/UPC(^BE、^BU、^B8、^B9)或 GS1 DataBar(^BR)?它们在哪些打印机上、以什么分辨率打印?
  • 选择用例: 消费者信息(带 Digital Link 的 QR 码)、收银台上的有效期和批次(GS1 DataMatrix 或 QR 码)、空间有限(GS1 DataMatrix)。从一个产品组开始。
  • 定义 Digital Link: 使用自己的域名和路径,重定向到现有的产品页面。GTIN 14 位,顺序 22/10/21,日期放在查询字符串中,不压缩。
  • 理清数据: 批次和日期在打印时来自 ERP、电子秤还是产线?可变数据意味着要在产线或标签打印机上打印,而不是印在预印包装上。
  • 按表 5-46 确定尺寸: 二维条码模块 0.396 至 0.990 mm(203 dpi:4 至 7 点)。EAN-13 至少 0.264 mm(203 dpi:^BY3 或更宽)。
  • 检查版面: 空白区 1X 或 4X,距 EAN 中心 50 mm 以内,相同的 GTIN,HRI 符合第 4.14.2 节。
  • 自动预检: 在 CI 中运行 zplcore comply --pack sunrise,对现有模板使用 zplcore gs1 migrate。
  • 测量打印效果: 使用符合 ISO/IEC 15415 的条码检测仪,目标 1.5/12/660 或更好;再用 GS1 测试套件和贸易伙伴实际使用的收银扫描器测试。
  • 零售商: 设置扫描器模式(至少模式 1),两个条码只响一声,让 POS 软件支持附加数据;以自有品牌和熟食作为试点。
  • 沟通协调: 与贸易伙伴以及你所在的 GS1 成员组织保持一致。

常见问题

到 2027 年底,我必须在产品上印刷二维条码吗?

不必。Sunrise 2027 是关于收银台能读取什么的目标。GS1 Germany 明确表示,想继续只用一维条码的企业无需添加二维条码。个别零售商可能会提出自己的要求。

EAN-13 会被取消吗?

不会。GS1 Germany、GS1 Austria 和 GS1 Switzerland 都明确了这一点,全球指南也是如此。只要仍有用途,一维条码就会保留。

我可以用 QR 码取代 EAN-13 吗?

目前品牌商品还不行。General Specifications 26.0 要求,在 90% 的 POS 扫描方案能够处理二维条码之前,二维条码必须与 EAN/UPC 或 GS1 DataBar 一起使用。例外是零售商的闭环:根据 GS1 的立场文件,如果零售商自己的收银台至少支持模式 2,自有品牌和店内贴标商品可以只使用一个二维条码。

GS1 Digital Link 需要自己的域名吗?

该语法允许使用任何域名,并可在前面加任意路径,GS1 建议使用自己的域名。公司域名下的一个子路径加上重定向就足够了。我们的 数字产品护照一文 介绍了无需新服务器的做法。

QR 码应使用哪个纠错等级?

GS1 没有规定具体等级:纠错等级越高越稳健,但符号也越大。GS1 指南中的一个示例使用 M 级(15%),我们的示例也是如此。关键是模块尺寸要保持在表 5-46 的范围内。

203 dpi 打印机能打印符合 Sunrise 要求的条码吗?

能。在 203 dpi 下,每模块允许 4 至 7 点,4 点得到 0.500 mm,几乎正好等于 0.495 mm 的目标值。瓶颈更可能是旁边的 EAN-13,它在 203 dpi 下至少需要 ^BY3。

QR 码需要自己的供人识读字符吗?

如果它位于带 HRI 的 EAN-13 旁边,就不需要。如果二维条码是唯一的条码,则显示 (01),后接 14 位 GTIN(General Specifications,第 4.14.2 节)。

药品和医疗器械怎么办?

它们继续使用 GS1 DataMatrix 和元素串,并遵守 UDI 或 DSCSA 等现有义务。在医疗保健领域,GS1 Digital Link 不会编码进二维条码。

zplCore 检查是 GS1 认证吗?

不是。它是对照已发布规则的预检,以及一个迁移助手。能否通过验收取决于检测仪、零售商和你所在的 GS1 成员组织。

来源

所有来源均于 2026 年 10 月 19 日访问。

GS1、GS1 DataMatrix 和 GS1 Digital Link 是 GS1 AISBL 的商标,本文仅作描述性使用。zplCloud 和 zplCore 不是 GS1 产品。

更多文章