1、Code128码打印ZPL语言BySueCode128码打印-ZPL语言 By Sue使用斑马打印机专门的打印命令ZPL语言进行VIN码打印 1. 斑马打印机驱动的设置 (1)使用的打印纸大概为-6.5cm*1.3cm (2)设置Paper Size的大小为6.5cm*1.3cm-使用的是用户自定义大小 (3)设置打印的浓度 Printer Darkness 为10(默认为10)-可使用打印命令MD16设置打印浓度 (4)设置Printer Actions 设置如下所示,具体作用不是很清楚 2. ZPL命令简单使用 (1) XA 和XZ 是开始和结束标记 (2) MD30 设置色带颜色的深度,
2、取值范围从-30到30,30为最深颜色深度 (3) LH 设置条码纸的边距 (4) FO 设置条码左上角的位置,0,0 代表完全不留边距 (5) ACN是设置字体的. 因为在条码下方会显示该条码的内容, 所以这里要设一下字体. 这个字体跟条码无关. Afo,h,w (6)BY是设置条码样式 BY命令的格式: 改变条码默认参数 Byw,r,h w 模块(窄条)宽 开机初始化值:2点 可接受的数值:1-10点 r 宽条与窄条的比例 开机初始化值:,.0 可接受的数值:,.0到3.0,,.1的增量(对固定比例的条码无效) 效) h 条码高度 开机初始化值:,点 可接受的数值:,点到标签高度 (7)B
3、C是打印code128的指令 (8)FD设置要打印的内容, FS表示换行. (9)XG命令用于调用一个或多个要进行打印的图形图像 (10)DGd:o.x,t,w,data 3. VIN(17位)条形码打印-使用ZPL语言即命令来实现Zebra打印机打印条形码 (1)使用ZPL语言实现打印,下面是实现函数ZebraPrint package cn.edu.hust.mes.client.utils; import java.io.File; import java.io.FileInputStream; import javax.print.Doc; import javax.print.Doc
4、Flavor; import javax.print.DocPrintJob; import javax.print.PrintException; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.SimpleDoc; public class ZebraPrint byte dotfont; String s_prt = XA,MD16, s_prt_buffer=; /XA打印开始标志 MD打印浓度为30 ABN,30,30设置字体大小 / 长,宽 publ
5、ic static void main(String args) try ZebraPrint a = new ZebraPrint(); a.setCommand(LNBMDLAA1CR023837); String str = a.getCommand(); System.out.println(str); a.print(str ); catch (Exception e) e.printStackTrace(); public ZebraPrint() throws Exception File file = new File(System.getProperty(user.dir)+
6、srcresourcests24.lib); FileInputStream fis = new FileInputStream(file); dotfont = new bytefis.available(); fis.read(dotfont); fis.close(); public void setCommand(String barcode) /String barcode = ABCD1234567890123; /printBarcode(barcode, 30, 60,60); / printBarcode(barcode, 30, 60); printBarcode(barc
7、ode, 100, 40); /打印之后能够正确扫描 /printBarcode(barcode,100,100); public void setCommand(String barcode,int x, int y,int fontX,int fontY,int thinBarcode,int times,int height) /String barcode = ABCD1234567890123; /printBarcode(barcode, 30, 60,60); / printBarcode(barcode, 30, 60); printBarcode(barcode,x,y,fo
8、ntX,fontY,thinBarcode,times,height); /打印之后能够正确扫描 /printBarcode(barcode,100,100); public String getCommand() return s_prt + s_prt_buffer+XZ; /XZ 打印结束 public void print(String str) throws PrintException PrintService psZebra = PrintServiceLookup.lookupDefaultPrintService(); if (psZebra = null) System.o
9、ut.println(没有发现条码打印机.); return; DocPrintJob job = psZebra.createPrintJob(); byte by = str.getBytes(); DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE; Doc doc = new SimpleDoc(by, flavor, null); job.print(doc, null); /* * 打印条形码 * param barcode 字符串 * param xx x坐标 * param yy y坐标 * param fontX 字体高度 单位
10、:dots * param fontY 字体宽度 * param thinBarcode 窄条宽度 单位:dots 可接受的数值:1-10点 * param times 宽条与窄条的比例 可接受的数值:,.0到3.0,,.1的增量(对固定比例的条码无效) * param height 高度 可接受的数值:,点到标签高度 */ protected void printBarcode(String barcode,int x, int y,int fontX,int fontY,int thinBarcode,int times,int height) System.out.println(bar
11、code); / s_prt_buffer += BY3FSFO+x+,+y+BEN,+h+FD + barcode + n; s_prt_buffer += FO+x+,+y+A1N,+fontX+,+fontY+BY+thinBarcode+,+times+,+height+BCN,Y,NFD + barcode + n; protected void printBarcode(String barcode,int x, int y) System.out.println(barcode); / s_prt_buffer += BY3FSFO+x+,+y+BEN,+h+FD + barco
12、de + n; s_prt_buffer += FO+x+,+y+A5N,30,33BY4,3,150BCN,Y,NFD + barcode + n; / s_prt_buffer += FO+x+,+y+BY4BCN,150,Y,N,Y,NFD + barcode + FS; / s_prt_buffer += FO+x+,+y+BY4BCN,150,Y,N,Y,NFD;80012345123451234512FS; /* * XA FO90,200BY4 BCN,256,Y,N,Y,N FD;80012345123451234512FS XZ FO 设置条码位置 FD设置要打印的内容, F
13、S表示换行 BY命令的格式: 改变条码默认参数 Byw,r,h w 模块(窄条)宽 开机初始化值:2点 可接受的数值:1-10点 r 宽条与窄条的比例 开机初始化值:,.0 可接受的数值:,.0到3.0,,.1的增量(对固定比例的条码无效) h 条码高度 开机初始化值:,点 可接受的数值:,点到标签高度 */ (2)上面的s24.lib包需要添加-放在项目下(需要注意路径问题) (3)下面的ZPL函数能够在6.5*1.3cm的纸张下打印出条形码长度与注释长度等宽 条形码和注释等宽:VIN码长度为17位 XA,MD16FO100,40A5N,30,33BY4,3,150BCN,Y,NFDLNBMDLAA1CR023837 XZ Sue remarks:在调整条形码和注释等宽的时候,当字体类型和大小很难调整,达到要求时,可以考虑调整宽条与窄条的比例
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1