通告和问题描述(症状)
涉及工业级打印产品
普印力(Printronix)品牌的P8000和P7000系列工业级高速行式打印机、T5r系列热敏标签条码打印机、T4M型号热敏标签条码打印机和L7032工业激光打印机。
打印问题症状描述
如何在上述工业级打印机上使用PGL仿真指令的语法来让PDF417二维条形码自动适应一个给定的打印宽度或打印区域?
问题回复解答
可能原因分析
PDF417二维条形码可以通过编程来适应一个给定的打印区域,不会超出该区域的边界。Wn
参数应该设置一个最大宽度值,但不会响应某些Wn
的取值。在这种情况下,所使用的打印参数会造成PGL仿真指令提示超出纸张区域的错误(PGL off-page error)。
推荐解决方案
办法就是在想要的最大宽度限制内灵活计算生成PDF417二维条形码的横向X维度(X-dimension)尺寸。如果使用了这个数值的X维度尺寸,甚至小于这个尺寸的宽度,就可以利用Wn
参数来设置二维码的最大允许宽度。根据打印机可能接受的最小X维度尺寸,所有的普印力(Printronix)品牌工业级打印机都设置有一个最小可能宽度Wn
。
PDF417二维条形码必须至少是X维度尺寸的85倍,而使用Wn
参数就可以强制二维码缩小至十分之几(n/10)英寸的范围内。如果最大宽度参数Wn
小于85倍的X维度参数(或X维度的默认值,前提是没有任何参数在用),就忽略Wn
参数,转而在默认的屏幕纵横比(aspect ratio)下打印二维码。
PDF417能够在普印力的工业级击打式打印机(行式打印机和针式打印机的分类总称)、工业激光打印机和工业级热敏打印机上打印,前提是需要用到PGL仿真指令语言来操控这些工业级打印机,语法是:BARCODE
PDF417
[DIR;][X[D]n;][Y[D]n;]Hn|Wn;]|[ASPECT;h:w;]|[Rn|Cn;[Sn;][BFn;L;][DARK;]SR;SC
(D)data field(D)
STOP
PDF417二维条形码呈矩形,由多行和多列构成,其所有列均为等宽,每行的行高和Y
参数相同,每列的列宽都是X
参数的宽度的17倍。注意:Xn
测量的增量单位是1/60英寸(1/60"),Yn
测量的增量单位是1/72英寸(1/72"),而XDn
和YDn
测量的则是打印头分辨率的增量,这个增量根据所用工业级打印机的不同而不同。Xn
或XDn
参数的宽度也叫做X维度(X-dimension)尺寸。X
参数和Y
参数的每个都是可选的,默认取值是X1
和Y2
,所以默认的X维度尺寸是16.7毫英寸(mil),相当于1/60英寸(1/60")。
推荐用下面5种方法中的1种来限制PDF417二维条形码的水平和垂直长度范围。对于已知清晰度的二维码,只允许在其上应用5个参数中的一个。如果没有应用这个5个参数的任何一个,二维码则以2:1的屏幕纵横比来打印(行数与数据列数的比值)。
Hn;
参数:表示以1/10英寸(1/10")增量单位来衡量的高度Wn;
参数:表示以1/10英寸(1/10")增量单位来衡量的宽度ASPECT;h:w;
参数:表示屏幕纵横比,高度:宽度(注意:如果缺省不输入此参数,则默认设置为2:1)Rn;
参数:表示行数- 数据列的数量(注意:每行也包含了4个开销列,所以C1打印5个汇总列)
PDF417二维条形码可以使用Wn
参数来重新定义一个以英寸为计量单位的最大宽度,该最大宽度是0.10英寸(0.10")的n倍。然而,总是会有一个最小宽度。每行包含了4个开销列和至少1个数据列,而每列正好是Xn
或XDn
参数的17倍。所以用Wn
定义的最大宽度必须大于等于数据所需的最小长度,即Wn≥(5 列)*(17 X维度/列)*(Xn 英寸/X维度)。
当X维度尺寸以打印的像素点数(dots)量来表示,同时以每英寸点数(dots per inch或dpi)来表示打印分辨率,Wn≥(5 列 * 17 X维度/列)*(XDn 点数/X维度)/(dpi)。
默认的X维度参数是X1
,其中X维度等于1/60英寸(1/60”)或0.017英寸(0.017")。一个0.017"X维度所对应的Wn最小值是:Wn = 5 * 17 * 0.017" = 1.45",所以向上取整就是n=15(1英寸宽度的十分之15)。这表示带有16.7 mil打印头针尖的击打式打印机不能打印生成一个小于1.45"宽的PDF417二维条形码。
在一台300dpi的工业级打印机上,生成最大为1英寸(1")宽二维码的X维度可用下面的方法计算:
W10 = 1.0″ 最大宽度 ≥ 5 * 17 *(XDn 点/300dpi),所以n ≤ 300 /(5*17)或n ≤ 3,其中n就表示所有一系列的像素点。在一台300dpi的工业级打印机上,当X维度=10 mils且总宽度<1"之时,请将XD3;W10
应用于二维码清晰度。
如果打印PDF417二维条形码时所用的Wn
宽度参数缺少足够空间在给定的X维度尺寸下容纳至少一个数据列,就忽略该Wn
参数,因为此时无法打印输出。在这种情况下会以默认的屏幕纵横比来打印二维码,该纵横比的比值=两个行:每个数据列。这不会产生一个PGL仿真指令的二维码错误(PGL barcode error),而且如果二维码能适应纸张大小,打印将顺利进行,二维码宽度全由数据来决定。
打印输出的二维条形码可能会比Wn
参数显示的数值宽出很多,甚至可能延伸到所处理的表格或表单之外,从而产生一个PGL仿真指令的超出纸张区域错误(PGL off-page error)。解决方案就是计算最大X维度尺寸,使之生成原先想要的宽度,然后检查一下设计规范是否允许使用这个X维度尺寸,或这个X维度尺寸是否可能用于工业级打印机。有必要将取值适当的Xn
或XDn
参数和Wn
参数打包到一起,以保证打印出来的二维码跟预期一模一样。