通告和問(wèn)題描述(癥狀)
涉及工業(yè)級(jí)打印產(chǎn)品
普印力(Printronix)品牌的P8000和P7000系列工業(yè)級(jí)高速行式打印機(jī)、T5r系列熱敏標(biāo)簽條碼打印機(jī)、T4M型號(hào)熱敏標(biāo)簽條碼打印機(jī)和L7032工業(yè)激光打印機(jī)。
打印問(wèn)題癥狀描述
如何在上述工業(yè)級(jí)打印機(jī)上使用PGL仿真指令的語(yǔ)法來(lái)讓PDF417二維條形碼自動(dòng)適應(yīng)一個(gè)給定的打印寬度或打印區(qū)域?
問(wèn)題回復(fù)解答
可能原因分析
PDF417二維條形碼可以通過(guò)編程來(lái)適應(yīng)一個(gè)給定的打印區(qū)域,不會(huì)超出該區(qū)域的邊界。Wn參數(shù)應(yīng)該設(shè)置一個(gè)最大寬度值,但不會(huì)響應(yīng)某些Wn的取值。在這種情況下,所使用的打印參數(shù)會(huì)造成PGL仿真指令提示超出紙張區(qū)域的錯(cuò)誤(PGL off-page error)。
推薦解決方案
辦法就是在想要的最大寬度限制內(nèi)靈活計(jì)算生成PDF417二維條形碼的橫向X維度(X-dimension)尺寸。如果使用了這個(gè)數(shù)值的X維度尺寸,甚至小于這個(gè)尺寸的寬度,就可以利用Wn參數(shù)來(lái)設(shè)置二維碼的最大允許寬度。根據(jù)打印機(jī)可能接受的最小X維度尺寸,所有的普印力(Printronix)品牌工業(yè)級(jí)打印機(jī)都設(shè)置有一個(gè)最小可能寬度Wn。
PDF417二維條形碼必須至少是X維度尺寸的85倍,而使用Wn參數(shù)就可以強(qiáng)制二維碼縮小至十分之幾(n/10)英寸的范圍內(nèi)。如果最大寬度參數(shù)Wn小于85倍的X維度參數(shù)(或X維度的默認(rèn)值,前提是沒(méi)有任何參數(shù)在用),就忽略Wn參數(shù),轉(zhuǎn)而在默認(rèn)的屏幕縱橫比(aspect ratio)下打印二維碼。
PDF417能夠在普印力的工業(yè)級(jí)擊打式打印機(jī)(行式打印機(jī)和針式打印機(jī)的分類總稱)、工業(yè)激光打印機(jī)和工業(yè)級(jí)熱敏打印機(jī)上打印,前提是需要用到PGL仿真指令語(yǔ)言來(lái)操控這些工業(yè)級(jí)打印機(jī),語(yǔ)法是: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二維條形碼呈矩形,由多行和多列構(gòu)成,其所有列均為等寬,每行的行高和Y參數(shù)相同,每列的列寬都是X參數(shù)的寬度的17倍。注意:Xn測(cè)量的增量單位是1/60英寸(1/60"),Yn測(cè)量的增量單位是1/72英寸(1/72"),而XDn和YDn測(cè)量的則是打印頭分辨率的增量,這個(gè)增量根據(jù)所用工業(yè)級(jí)打印機(jī)的不同而不同。Xn或XDn參數(shù)的寬度也叫做X維度(X-dimension)尺寸。X參數(shù)和Y參數(shù)的每個(gè)都是可選的,默認(rèn)取值是X1和Y2,所以默認(rèn)的X維度尺寸是16.7毫英寸(mil),相當(dāng)于1/60英寸(1/60")。
推薦用下面5種方法中的1種來(lái)限制PDF417二維條形碼的水平和垂直長(zhǎng)度范圍。對(duì)于已知清晰度的二維碼,只允許在其上應(yīng)用5個(gè)參數(shù)中的一個(gè)。如果沒(méi)有應(yīng)用這個(gè)5個(gè)參數(shù)的任何一個(gè),二維碼則以2:1的屏幕縱橫比來(lái)打?。ㄐ袛?shù)與數(shù)據(jù)列數(shù)的比值)。
Hn;參數(shù):表示以1/10英寸(1/10")增量單位來(lái)衡量的高度Wn;參數(shù):表示以1/10英寸(1/10")增量單位來(lái)衡量的寬度ASPECT;h:w;參數(shù):表示屏幕縱橫比,高度:寬度(注意:如果缺省不輸入此參數(shù),則默認(rèn)設(shè)置為2:1)Rn;參數(shù):表示行數(shù)- 數(shù)據(jù)列的數(shù)量(注意:每行也包含了4個(gè)開(kāi)銷列,所以C1打印5個(gè)匯總列)
PDF417二維條形碼可以使用Wn參數(shù)來(lái)重新定義一個(gè)以英寸為計(jì)量單位的最大寬度,該最大寬度是0.10英寸(0.10")的n倍。然而,總是會(huì)有一個(gè)最小寬度。每行包含了4個(gè)開(kāi)銷列和至少1個(gè)數(shù)據(jù)列,而每列正好是Xn或XDn參數(shù)的17倍。所以用Wn定義的最大寬度必須大于等于數(shù)據(jù)所需的最小長(zhǎng)度,即Wn≥(5 列)*(17 X維度/列)*(Xn 英寸/X維度)。
當(dāng)X維度尺寸以打印的像素點(diǎn)數(shù)(dots)量來(lái)表示,同時(shí)以每英寸點(diǎn)數(shù)(dots per inch或dpi)來(lái)表示打印分辨率,Wn≥(5 列 * 17 X維度/列)*(XDn 點(diǎn)數(shù)/X維度)/(dpi)。
默認(rèn)的X維度參數(shù)是X1,其中X維度等于1/60英寸(1/60”)或0.017英寸(0.017")。一個(gè)0.017"X維度所對(duì)應(yīng)的Wn最小值是:Wn = 5 * 17 * 0.017" = 1.45",所以向上取整就是n=15(1英寸寬度的十分之15)。這表示帶有16.7 mil打印頭針尖的擊打式打印機(jī)不能打印生成一個(gè)小于1.45"寬的PDF417二維條形碼。
在一臺(tái)300dpi的工業(yè)級(jí)打印機(jī)上,生成最大為1英寸(1")寬二維碼的X維度可用下面的方法計(jì)算:
W10 = 1.0″ 最大寬度 ≥ 5 * 17 *(XDn 點(diǎn)/300dpi),所以n ≤ 300 /(5*17)或n ≤ 3,其中n就表示所有一系列的像素點(diǎn)。在一臺(tái)300dpi的工業(yè)級(jí)打印機(jī)上,當(dāng)X維度=10 mils且總寬度<1"之時(shí),請(qǐng)將XD3;W10應(yīng)用于二維碼清晰度。
如果打印PDF417二維條形碼時(shí)所用的Wn寬度參數(shù)缺少足夠空間在給定的X維度尺寸下容納至少一個(gè)數(shù)據(jù)列,就忽略該Wn參數(shù),因?yàn)榇藭r(shí)無(wú)法打印輸出。在這種情況下會(huì)以默認(rèn)的屏幕縱橫比來(lái)打印二維碼,該縱橫比的比值=兩個(gè)行:每個(gè)數(shù)據(jù)列。這不會(huì)產(chǎn)生一個(gè)PGL仿真指令的二維碼錯(cuò)誤(PGL barcode error),而且如果二維碼能適應(yīng)紙張大小,打印將順利進(jìn)行,二維碼寬度全由數(shù)據(jù)來(lái)決定。
打印輸出的二維條形碼可能會(huì)比Wn參數(shù)顯示的數(shù)值寬出很多,甚至可能延伸到所處理的表格或表單之外,從而產(chǎn)生一個(gè)PGL仿真指令的超出紙張區(qū)域錯(cuò)誤(PGL off-page error)。解決方案就是計(jì)算最大X維度尺寸,使之生成原先想要的寬度,然后檢查一下設(shè)計(jì)規(guī)范是否允許使用這個(gè)X維度尺寸,或這個(gè)X維度尺寸是否可能用于工業(yè)級(jí)打印機(jī)。有必要將取值適當(dāng)?shù)?code>Xn或XDn參數(shù)和Wn參數(shù)打包到一起,以保證打印出來(lái)的二維碼跟預(yù)期一模一樣。