斑马打印机怎么设置打印条码(与斑马打印机打印条码2)
斑马打印机怎么设置打印条码(与斑马打印机打印条码2)/// <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&
前面写到斑马打印机的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打印”即可获取。