您的当前位置:首页Code128码打印---ZPL语言BySue

Code128码打印---ZPL语言BySue

2021-11-03 来源:乌哈旅游


Code128码打印---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 设置色带颜色的深度,取值范围从-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)^BC是打印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.DocFlavor;

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\

//^XA打印开始标志 ^MD打印浓度为30 ^ABN,30,30设置字体大小

// 长,宽

public 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\")+\"\\\\src\\\\resources\\\s24.lib\");

FileInputStream fis = new FileInputStream(file);

dotfont = new byte[fis.available()];

fis.read(dotfont);

fis.close();

}

public void setCommand(String barcode) {

//String barcode = \"ABCD1234567890123\";

//printBarcode(barcode, 30, 60,60);

// printBarcode(barcode, 30, 60);

printBarcode(barcode, 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,fontX,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.out.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 字体高度 单位: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(barcode);

// s_prt_buffer += \"^BY3^FS^FO\"+x+\\"\\n\";

s_prt_buffer +=

\"^FO\"+x+\,\"+height+\"^BCN,,

Y,N^FD\" + barcode + \"\\n\";

}

protected void printBarcode(String barcode,int x, int y) {

System.out.println(barcode);

// s_prt_buffer += \"^BY3^FS^FO\"+x+\

\"\\n\";

s_prt_buffer += \"^FO\"+x+\+ barcode +

\"\\n\";

// s_prt_buffer += \"^FO\"+x+\\"^FS\";

// s_prt_buffer +=

\"^FO\"+x+\\";

/*

*

^XA

^FO90,200^BY4

^BCN,256,Y,N,Y,N

^FD>;>80012345123451234512^FS

^XZ

^FO 设置条码位置

^FD设置要打印的内容, ^FS表示换行

^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,^MD16^FO100,40^A5N,30,33^BY4,3,150^BCN,,Y,N^FDLNBMDLAA1CR023837

^XZ

Sue remarks:在调整条形码和注释等宽的时候,当字体类型和大小很难调整,达到要求

时,可以考虑调整宽条与窄条的比例

因篇幅问题不能全部显示,请点此查看更多更全内容