如何计算zpl条形码的宽度(以点为单位)?

时间:2015-08-03 18:00:53

标签: barcode zebra-printers zpl

^XA
^FO0,90^AD^BY3
^BCN,100,Y,N,Y,A
^MD10
^FD1458622235534^FS
^XZ

使用Label Viewer我能够使用ZPL,在阅读了一些文档后发现^FO0,90是条形码的位置。 0表示左侧的点数,90表示顶部的点数。

我的问题是,如何以点为单位计算上述条形码的宽度?如果我知道条形码的宽度,我可以以编程方式居中。

打印机的分辨率为203dpi,并给出3' (宽度)x 2' (长度)标签,即610点。

计算ZPL条形码宽度的公式是什么?

2 个答案:

答案 0 :(得分:3)

Code 128条形码包括三种模式。 ^ BC中的“A”表示条形码算法将根据字母与数字混合的位置和/或连续多少个数字自动选择最佳模式。这导致条形码的长度根据其含量而变化。

您可以将A更改为N.这将使宽度易于估计,即使它不是最节省空间的。

对于N选项:书挡的总数为106个点,每个数字为33个点。

对于N +子集C选项:如果您可以肯定地说您将始终具有偶数位数(没有字母,空格或其他符号)。您可以强制条形码进入子集C模式。计数书挡104点,每两位数计33点。但你必须有一个偶数个数字。

^BCN,100,Y,N,Y,N
^FD>;1422335544^FS

>;告诉ZPL将其渲染为子集C.

如果您知道需要支持字母数字条形码,那么请坚持使用A.这就是事情变得更难的地方。

您需要使用您选择的编程语言对条形码算法进行建模。也许你可以找到一个现有的库,因为Code 128是一个非常受欢迎的条形码。使用该库在内存中呈现条形码。您可能必须使用参数来使其生成与您的ZPL输出相等的条形码。然后让程序使用库的输出来确定条形码的宽度。

如果你的条形码总是13位数,那么自动居中是一个没有实际意义的点。即使在自动模式下,条形码也始终具有相同的宽度。找到看起来像标签中心的^FO,并坚持下去。此条形码宽368点。试试^FO121,90

我没有计算条形码的宽度,我通过将标签渲染到Gif来测量它,然后在绘画程序中检查标签,让我计算点数。

答案 1 :(得分:0)

我建议您查看Code 128维基百科文章了解详情。

代码128的自然长度单位是标注为x的窄条宽度(在ZPL代码中设置为3个点)。代码128条形码(不包括两个10x静区)由

组成
  1. 一个开始字符(11x宽)
  2. n宽度为11x的编码字符
  3. CRC(11倍宽)
  4. 停止字符(12x宽)
  5. 如果您的数据采用n个编码字符,则条形码的长度为(34 + n * 11)x。在你的情况下,x是3个点,所以在8dot / mm条形码的宽度为(12.75 + n * 4.125)mm。

    您必须查看编码以找出n。最小编码不是唯一的,但在您的情况下,数据将使用8个条形码字符进行编码:6个代码C字符(对于6对数字),1个开关代码字符和1个代码A字符(对于最后一个数字)。条形码应为45.75mm / 366dot宽。

    您的ZPL存在一些问题。您在非UCC条形码上指定了UCC校验码。我不熟悉UCC / GS1-128条形码,但这可能会引入额外的条形码字符或无关紧要。

    另外,您可以考虑使用前导0填充时间戳。使用Code 128,数字对具有更好的编码。 14位数的条形码将缩短4.125mm。

    我刚提到安静区,条形码阅读器需要它们。