【发布时间】:2019-10-27 03:39:46
【问题描述】:
为了使用 ZPL II 语言的斑马打印机打印 code128 条形码,我正在尝试将字符串(这是我的条形码)转换为新字符串。这个新字符串与一些与在 ALPHA 和 NUMERIC 模式之间切换相关的特定命令相同。切换到 NUMERIC 模式有助于使您的条码更紧凑。
所以假设我要打印的条形码是:C00J025042101110823611001150119611
结果应该是这样的:
>:C00J>5025042101110823611001150119611
>: mean we Start in ALPHA
>5 Mean we switch from ALPHA to NUMERIC ONLY
>6 Mean we switch from NUMERIC to ALPHA
所以我正在寻找的是(如果可能的话)一个将在我的字符串中插入>5 或>6 的正则表达式。
这是另一个例子:
要打印的条形码 = CJYJY10442101110S23611001150119611
要发送到打印机的字符串 = >:CJYJY1>50442101110>6S2>53611001150119611
更多示例,以便了解它是如何开始的。左边是要打印的条形码,右边是发送到打印机的代码。
C000025042101110823611001150119611>:C0>500025042101110823611001150119611
CJ00025042101110823611001150119611>:CJ>500025042101110823611001150119611
C0J0025042101110823611001150119611>:C0J0>5025042101110823611001150119611
C00J025042101110823611001150119611>:C00J>5025042101110823611001150119611
C000J25042101110823611001150119611>:C000J2>55042101110823611001150119611
C0000J5042101110823611001150119611>:C>50000>6J>55042101110823611001150119611
C00000J042101110823611001150119611>:C0>50000>6J0>542101110823611001150119611
ZEBRA ZPL II 文档的额外说明:
代码 128 子集 A 和 C 被编程为字段数据字符串中的数字对 00-99。 [...] 在子集 C 中,它们按输入的方式打印。 注意:编程为数字对 (D2) 的第一个字符的非整数将被忽略。但是,编程为数字对 (2D) 的第二个字符的非整数会使整个数字对无效,并且该对被忽略。代码移位前的字段数据字符串中额外的未配对数字也将被忽略。
子集 C 是 NUMERIC,由“>6”调用
【问题讨论】:
-
据我所知,没有标准,您可以选择何时切换到 ALPHA 或 NUMERIC。 ZPL-II 语言并不简单,我想清楚。可以从字符串的开头一直到结尾都停留在 ALPHA 中,但这会使条形码变得非常大。切换到 NUMERIC 模式是大大减小条形码大小的技巧。
-
你是对的,这是我的标签设计软件(Codesoft)生成的字符串,我不知道为什么它没有那样做......但无论如何它应该可以工作。顺便说一句,这是一张只有 Alpha 中的条形码的图片,并且在相同的条形码下方从 alpha 切换到 NUM,您可以看到宽度差异:i.imgur.com/SvDpZ2D.png