前面写到斑马打印机的ZPL措辞,及常用的命令。本次写下C#如何调用ZPL措辞在斑马打印机上进行打印。
C#调用斑马打印机打印紧张用到两个库:Fnthex32.dll和SMT.ZEBRA.dll,利用方法:SMT.ZEBRA.dll在项目中引用,Fnthex32.dll只需把dll放到C:\Windows\SysWow64和C:\Windows\System32 文件夹中即可。其余把稳天生的程序假如32位,64位会报错。
代码实现:

紧张用到的方法:ZebraPrinter.PrintLabEx(string n_strTemplateFilePath, string n_strLabels, string n_strPrinterName)
第一个参数:n_strTemplateFilePath是ZPL命令的路径地址,编写好的ZPL命令格式是.TXT或者.ZPL格式,把稳假如大写。
第二个参数:n_strLabels标签数据凑集字符串,多个标签行用'|'分割,单个标签行数据内部用'^'(字段)分割或'~'(笔墨或条码)分割
第三个参数:n_strPrinterName是打印机名称。
代码如下:
/// <summary> /// CODE128条码天生; /// </summary> /// <param name="sn">条码内容</param> /// <param name="txt_x">文本起始X</param> /// <param name="txt_y">文本起始Y</param> /// <param name="txt_font">文本字体</param> /// <param name="txt_size">字体大小</param> /// <param name="barcode_width">条码宽</param> /// <param name="barcode_x">条码起始X</param> /// <param name="barcode_y">条码起始Y</param> /// <param name="barcode_height">条码高</param> /// <param name="print_name">打印机名称</param> public void Print_code128(string sn, string txt_x, string txt_y, string txt_font, string txt_size, string barcode_width , string barcode_x, string barcode_y, string barcode_height, string print_name) { FileStream F = new FileStream("code128.TXT", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); F.Close(); StreamWriter sw = new StreamWriter("code128.TXT"); sw.WriteLine("^XA^PW709^LH0,0^FO" + txt_x + "," + txt_y); sw.WriteLine("^CF" + txt_font + "," + txt_size); sw.WriteLine("^FD" + sn + "^FS"); sw.WriteLine("#CN_DATA1#;|黑体,粗体|20|10|"); sw.WriteLine("^BY" + barcode_width + ",3.0"); sw.WriteLine("^FO" + barcode_x + "," + barcode_y); sw.WriteLine("^BCN," + barcode_height + ",N,N,N,A"); sw.WriteLine("^FD#ID1#^FS^PQ1,0,1,Y^XZ"); sw.Close(); ZebraPrinter printer = new ZebraPrinter(); string str = string.Concat(" ", "~", sn); string printPath = "code128.TXT"; printer.PrintLabEx(printPath, str, print_name); } /// <summary> /// PDF417条码天生; /// </summary> /// <param name="sn">条码内容</param> /// <param name="txt_x">文本起始X</param> /// <param name="txt_y">文本起始Y</param> /// <param name="txt_font">文本字体</param> /// <param name="txt_size">字体大小</param> /// <param name="barcode_width">条码宽</param> /// <param name="barcode_x">条码起始X</param> /// <param name="barcode_y">条码起始Y</param> /// <param name="barcode_height">条码高</param> /// <param name="print_name">打印机名称</param> public void Print_pdf417(string sn, string txt_x, string txt_y, string txt_font, string txt_size, string barcode_width , string barcode_x, string barcode_y, string barcode_height, string print_name) { FileStream F = new FileStream("pdf417.TXT", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); F.Close(); StreamWriter sw = new StreamWriter("pdf417.TXT"); sw.WriteLine("^XA^PW709^LH0,0^FO" + txt_x + "," + txt_y); sw.WriteLine("^CF" + txt_font + "," + txt_size); sw.WriteLine("^FD" + sn + "^FS"); sw.WriteLine("#CN_DATA1#;|黑体,粗体|20|10|"); sw.WriteLine("^BY" + barcode_width + ",3.0"); sw.WriteLine("^FO" + barcode_x + "," + barcode_y); sw.WriteLine("^B7N," + barcode_height + ",2,,,N"); sw.WriteLine("^FD#ID1#^FS^PQ1,0,1,Y^XZ"); sw.Close(); ZebraPrinter printer = new ZebraPrinter(); string str = string.Concat(" ", "~", sn); string printPath = "pdf417.TXT"; printer.PrintLabEx(printPath, str, print_name); } /// <summary> /// QR条码天生 /// </summary> /// <param name="sn">条码内容</param> /// <param name="txt_x">文本X位置</param> /// <param name="txt_y">文本Y位置</param> /// <param name="txt_font">文本字体</param> /// <param name="txt_size">文今年夜小</param> /// <param name="barcode_x">二维码X位置</param> /// <param name="barcode_y">二维码Y位置</param> /// <param name="barcode_Magnification">二维码放大系数</param> /// <param name="ErrorCorrectionLevel">二维码纠错级别</param> /// <param name="print_name">打印机名称</param> public void Print_QR(string sn, string txt_x, string txt_y, string txt_font, string txt_size, string barcode_x, string barcode_y, string barcode_Magnification, string ErrorCorrectionLevel, string print_name) { FileStream F = new FileStream("QR.TXT", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); F.Close(); StreamWriter sw = new StreamWriter("QR.TXT"); //第一段笔墨 sw.WriteLine("^XA^LH0,0^FO" + txt_x + "," + txt_y); sw.WriteLine("^CF" + txt_font + "," + txt_size); sw.WriteLine("^FD" + sn + "^FS"); //占位字符 sw.WriteLine("#CN_DATA1#;|黑体,粗体|20|10|"); //二维码 sw.WriteLine("^FO" + barcode_x + "," + barcode_y); sw.WriteLine("^BQN,2," + barcode_Magnification); sw.WriteLine("^FD" + ErrorCorrectionLevel + "A,#ID1#^FS^PQ1,0,1,Y^XZ"); sw.Close(); ZebraPrinter printer = new ZebraPrinter(); string str = string.Concat(" ", "~", sn); string printPath = "QR.TXT"; printer.PrintLabEx(printPath, str, print_name); } private void button1_Click(object sender, EventArgs e) { if(comboBox1.SelectedIndex==0) { zp.Print_code128(textBox1.Text, "250", "75","0","50","4","80","5","60", printName); } else if(comboBox1.SelectedIndex == 1) { zp.Print_pdf417(textBox1.Text, "90", "75", "0", "50", "5", "150", "70", "8", printName); } else { zp.Print_QR(textBox1.Text,"160","20","0","80","50","0","4","H",printName); } }
完全代码已上传,须要的关注我后私信发送“ZPL打印”即可获取。