C#Winform控制斑马打印机打印条码标签
前言
这两天在做一个用C#控制斑马标签打码机进行打印条码。
首先打印机选型为 Zebra GT820这个型号
接着在官网上查询相关驱动和Designer设计器
https://download.csdn.net/download/HEIMENGER/22002254
上方为驱动,下方为设计器,安装好后,打开Designer,设计你自己的需要打印的内容,如下图所示
点击打印,出现以下界面
勾选Print to file,保存到你C#项目目录下的Debug下,并在工程文件中添加现有项
接下来,打开C#创建一个Winform
添加引用为这两个DLL文件
斑马条码打印机联合C#链接,点击即可https://download.csdn.net/download/HEIMENGER/22002625
再添加按钮,并触发其点击事件,将 PrintLabel();放入到触发事件当中去
再将以下代码复制到你的项目中去即可使用,但会出现命名空间的错误,添加其所需的命名空间即可,如果没有就添加引用,下面是所有的引用
using LabelHelper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 控制斑马打印机打印条码标签
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void PrintLabel()
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { PrintLabel(); }));
return;
}
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = "ZDesigner GT800 (EPL)"; //获取打印机型号
string filePath = Environment.CurrentDirectory; //定义变量路径为Debug
string fileName = "1.prn";
if (File.Exists(fileName) == false)
{
MessageBox.Show("未找到标签模板");
return;
}
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");
bool printerExist = false;
foreach (ManagementObject printer in searcher.Get())
{
if (printer["Name"].ToString().Equals(printDoc.PrinterSettings.PrinterName))
{
printerExist = true;
if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
{
// printer is offline by user
MessageBox.Show("打印机不在线");
return;
}
}
} //枚举判断打印机
if (!printerExist)
{
MessageBox.Show("未找到打印机");
return;
}
byte[] buffer = null;
using (FileStream fs = new FileStream(fileName, FileMode.Open)) //读取数据和写入数据
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
fs.Close();
fs.Dispose();
}
LabelPrintHelper.SendFileToPrinter(buffer, printDoc.PrinterSettings.PrinterName, fileName, "90178333244178874429027231");//打印
}
private void button1_Click(object sender, EventArgs e)
{
PrintLabel();
}
}
}
如果条码变量进行变化,那添加以下代码,设置变量更改即可
using LabelHelper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 控制斑马打印机打印条码标签
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void PrintLabel()
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate { PrintLabel(); }));
return;
}
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = "ZDesigner GT800 (EPL)"; //获取打印机型号
string filePath = Environment.CurrentDirectory; //定义变量路径为Debug
//string fileName = filePath + "\\1.prn";
string fileName = "1.prn";
string newFileName = filePath + "\\1.new.prn";
if (File.Exists(fileName) == false)
{
MessageBox.Show("未找到标签模板");
return;
}
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");
bool printerExist = false;
foreach (ManagementObject printer in searcher.Get())
{
if (printer["Name"].ToString().Equals(printDoc.PrinterSettings.PrinterName))
{
printerExist = true;
if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
{
// printer is offline by user
MessageBox.Show("打印机不在线");
return;
}
}
} //枚举判断打印机
if (!printerExist)
{
MessageBox.Show("未找到打印机");
return;
}
byte[] buffer = null;
using (FileStream fs = new FileStream(fileName, FileMode.Open)) //读取数据和写入数据
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
/*****************************************************************查询文本中这段字符************************将其改变为这段字符****可设置为变量*******最后一段数字为时间设置变量*******/
buffer = LabelPrintHelper.Replace(buffer, Encoding.ASCII.GetBytes("3836556465461"), Encoding.ASCII.GetBytes("987654321987654"), "90178333244178874429027231");
fs.Close();
fs.Dispose();
}
LabelPrintHelper.SendFileToPrinter(buffer, printDoc.PrinterSettings.PrinterName, newFileName, "90178333244178874429027231");//打印
}
private void button1_Click(object sender, EventArgs e)
{
PrintLabel();
}
}
}
下面是程序的全部源码
https://download.csdn.net/download/HEIMENGER/22002680
这样即可利用Winform简单控制打印机进行打印