ZPL如何居中条码(代码128)

dar*_*dog 9 zpl-ii zpl zebra-printers

我想知道如何将条形码代码128居中.在图片上你应该看到它现在是左对齐的. 标签

我的zpl:

^XA
^LH10,10
^FO0,0^XGE:SWESE001.GRF^FS
^FO440,0^XGE:SWESE000.GRF^FS
^FO0,70^FB550,50,0,C,0^AQN,25,30^FDSpraynozzle 50mm^FS
^FO0,130^BY2^BCN,30,Y,Y,N,N^FDS/N:941001-0114-0001^FS
^FO180,170^AQN,23,20^FDwww.swepro.com^FS
^XZ
Run Code Online (Sandbox Code Playgroud)

小智 16

我正在发布我的解决方案以防有人正在寻找它.正如E_S所提到的,为了将条形码集中在标签中,您必须按照以下步骤通过代码计算它:

  • 检查您的窄条宽度,在您的情况下2 (^BY2)
  • 以点为单位找出标签总宽度.为此,您必须知道打印机的分辨率是多少(eg: 8 dots / mm).所以,如果你有一个80 mm广泛的标签,80 * 8 = 640 dots
  • 计算条形码中的每个字符,包括调用代码和校验位,如下所示.有关调用代码的信息,请参阅:https://www.zebra.com/content/dam/zebra/manuals/en-us/software/zpl-zbi2-pm-en.pdf(页95)
  • 请注意,调用代码(">:", ">5", etc.)计为一个字符,并且这些字符mode C成对存储.有关更多信息mode C,请参阅http://en.wikipedia.org/wiki/Code_128
  • 如果您的条形码是>:S/N:941001-0114-0001必须计算[开始代码B] + [20个字符] + [校验位] = 22
  • 如果您的条形码是>:S/N:>5941001>6->50114>6->50001必须的[start code B] + [4 characters for 'S/N:'] + [mode C invocation] + [3 characters for '941001'] + [mode B invocation] + [1 characters for '-'] + [mode C invocation] + [2 characters for '0114'] + [mode B invocation] + [1 characters for '-'] + [mode C invocation] + [2 characters for '0001'] + [check digit] = 20
  • 每个角色占用11个单位混合空格和条形,除此之外stop code还有2个额外单位(总共13个)
  • 这里有好东西......条形码宽度是: ((chars counted [22 or 20] * 11) + (stop char * 13)) * narrow bar width = 510 dots or 466 dots
  • 现在我们所要做的就是round((label width - barcode width) / 2)使用它来定位条形码^FT

而已!希望它可以帮到某人!