发布网友 发布时间:2022-05-01 07:34
共1个回答
热心网友 时间:2023-10-09 18:48
按照条码的技术规范,楼主的愿望目前还不能实现,高度可以设置一样,宽度不能设置成一样,如果刚好能设置成一样就是巧合了。
以下说明理由:
首先我们要理解条码机打印精度和条码密度的意义。
条码打印机的打印精度是按像素点算的,单位 dpi 是 每英寸的点数,300dpi是每英寸300点(11.8点/毫米),600dpi是每英寸600点(23.6点/毫米)。
我们通常说的条码是指黑白条的一维条码,黑白条的条码用不同宽度的黑条和白条组合来代表不同的数据字符,不同的宽度是为了便于光电原理的条码扫描器扫描解码。这个原理就像计算机二进制的多个1和0的组合编码。
条码的宽度与码制、条码密度关系最大。不同的码制用黑白条对字符进行编码的规则不同,有些需要很多黑白条来编一个字符,有些则需要较少。影响条码密度是黑白条的宽度,为了保证条码能被条码扫描器识读,条码的黑白条是有宽窄比的。宽窄比就是宽条与窄条的宽度比值,通常是2:1或者3:1,也有其它的比值的,比值越小条码扫描器越难识读。无论比值是多少,都应该保证打印或印刷出来的条码便于条码扫描器识读。
我们这里以常用的 Code 128 可变长条码来举例说明条码密度怎么影响条码宽度。Code 128码跟计算机的ASCII编码对应,用4种宽度的黑白条进行编码,每个字符用3条黑条+3条白条表示,当然还包括前后的起始码、校验码和终止码。如下面的图表所示:
Code 128码制编码需要的黑白条数算是较少的了,单个字符编码需要的黑白条数越多,条码宽度越宽,每变化一级条码密度,变化的宽度越大(根据宽窄比进行计算),整个条码的字符数越多,这个宽度变化越明显。
我们分别用300dpi和600dpi生成两个同样数据的Code 128码:
这个的条码密度是 0.454 个字符/毫米。
这个的条码密度是 0.478 个字符/毫米。
我们可以在条码编辑软件设置条码的密度、高度等属性,如下图:
条码密度根据打印机的精度,可以设置的密度值不是连续的,而是离散的级跳式的值。因为首先需要保证宽窄比达到扫描器可以识读;其次打印机按点阵方式打印,打印精度对黑条的宽度会有影响。如前面所说,300dpi是11.8点/毫米,600dpi是23.6点/毫米,打印条码黑条必须满足宽条和窄条同时是像素点的整数倍,这就导致条码密度值是离散的了。打印机的精度越低,密度的可选离散值就越少,反之密度值越多。
上面两个300dpi和600dpi的条码,我们看一下他们其中几个连续的可选密度值:
300dpi:0.278、0.319、0.375、0.454、0.577
600dpi:0.286、0.307、0.331、0.358、0.391、0.429、0.478、0.537、0.614
单位都是:个字符/毫米
我们看到没有相同的密度值,密度值不同,即使同样的码制和数据,条码宽度肯定也是不同的。
如果我们不考虑保证条码能够用条码扫描器识读,我们还有一种方法可以用不同精度的打印机打印相同宽度的条码。方法就是使用图像编辑软件(如平面设计的AI、CorleDraw),这些软件可以把条形码转换为位图进行连续的拉伸编辑。不过这样做通常都导致打印的条码不能识读或者很难识读。如果条码不能被扫描器识读,那条码就只能给人“看”了。
备注:为了能通俗一些进行说明,有些专业术语表述未必严谨遵守标准概念。
追问ZPL脚本语言中条码的密度和高度如何设置?追答抱歉,ZPL语言我不会,我有ZPL的资料,如果需要可以提供给你。