如何减小Code128条形码的长度
在常用的条形码码制中,能够减小条形码长度的只有Code128码制,所以多零这次讲解是在Code128码制下的条形码长度压缩方法。
为什么要减小条形码的长度
Code128的条形码是可以扩展长度的,即字符越多,对应生成的条形码的宽度就越长。
但是往往受到打印纸尺寸的限制(通常业务上或设计制作上会规定打印纸的尺寸),如果条形码的长度过大,打印后的条形码可能会被压缩,部分细小条纹会合并消失,最终就会导致扫码出错,无法识别条形码。
例如下图,条形码中的细小条纹被挤压消失。
如何减小Code128条形码的长度
方法是尽可能使用Code C字符集生成Code128条形码。
Code128码制中,为了同时兼顾最大可用字符范围和条形码长度最小,分别提供3种字符集:Code A、Code B和Code C 。其中Code C的字符集范围是偶数位的整数,即所有数字的位数是偶数,例如11、1122、445566,但是奇数位的整数(例如123)就不是Code C字符集范围。
这三种字符集中,只有C字符集全部都是数字,因此生成的条形码最短。
例如上图,内容为“00000000000000000000”使用三种字符集分别生成的条形码,字符集C的条形码长度最短。
因此,减小Code128长度的方法是使用字符集C生成条形码。
那么,对于非偶数位的字符,如何在压缩条形码长度?
如果您的业务中,条形码字符并不是Code C要求的偶数位(例如条形码内容是ABC1234567890),那么如何压缩长度呢?
这种情况需要使用到Code128的切换字符功能,其原理是将字符分为多个字符集生成条形码。
举个例子,字符内容是“ABC1234567890”,则分为两段,第1段是“ABC”,第2段是“1234567890”。第1段使用Code A生成条形码,第2段使用Code C生成条形码,这样就能最大限度地缩减条形码长度。
那么如何实现呢?
在Code128标准文档中,切换字符的功能是这样描述的:
切换字符Code A(B或C)将符号字符集从先前确定的字符集转变到切换字符指定的新的字符集。这种转变适用于切换字符之后的所有字符直到符号结束或遇到另一个切换字符或转换字符。
还是以上的例子,其表达式是{Code A}ABC{Code C}1234567890,意思是开始使用字符集A生成条形码,遇到{Code C}就将后面的字符使用字符集C生成条形码。
这样种方法,虽然减小条形码长度,但很麻烦,如果是批量生成条形码时,那就会更麻烦更耗时。
为了消除以上提到的麻烦,多零将条形码长度的压缩功能,集成到码制【Code128(自动)】中。
即是使用Code128(自动)生成条形码,多零就会自动智能分段字符并组合字符集,以最小长度生成条形码。
例如上图,同样的内容“ABC1234567890”,生成的条形码的长度不一样。
所以,如果您生成的条形码内容是类似于“ABC1234567890”,建议使用【Code128(自动)】码制生成条形码,条形码的长度会更短。