一.使用 ZXing.Net 库
先通过 NuGet 包管理器安装安装 ZXing.Net库。
有两种设置条码规格的方法
方法一
// 创建条形码生成器
BarcodeWriter wr = new BarcodeWriter();
// 设置条形码规格
EncodingOptions encodeOption = new EncodingOptions();
encodeOption.Height = 240; // 必须制定高度、宽度
encodeOption.Width = 560;
encodeOption.Margin = 10;
wr.Options = encodeOption; // 应用编码选项
// 设置条形码格式(例如 CODE_128, QR_CODE 等)
wr.Format = BarcodeFormat.CODE_128; // 设置条形码格式
方法二
int width = 240; // 条形码的宽度
int height = 150; // 条形码的高度
BarcodeWriter wr= new BarcodeWriter
{
Format = BarcodeFormat.CODE_128,
Options = new ZXing.Common.EncodingOptions
{
Width = width,
Height = height,
//PureBarcode = true, // 设置为纯条形码模式
Margin = 10, // 设置总体边距为0
PureBarcode = false, // 设置为非纯条形码模式,以便添加上下边距
}
};
3.生成条码
img2 = wr.Write("条码内容");
二.斑马打印机ZPL语言
zpl指令格式构成
^XA
^XA: 这是 ZPL 指令的开始标志,表示打印任务的开始。
^FO100,100
^FO: 表示“Field Origin”,定义字段的起始位置。
100,100: 指定字段的 X 和 Y 坐标(以点为单位),即在标签上的位置。在这里,字段的左上角将位于横坐标 100 和纵坐标 100 的位置。
^BY4
^BY: 设置条形码的宽度和间隔。
4: 设置条形码的宽度因子为 4,这会影响条形码的宽度和打印的条形码的细节。
^BCN,250,N,N,N
^BC: 指定生成 Code 128 条形码。
N: 表示条形码的方向(N 表示正常方向)。
250: 指定条形码的高度为 250 点。
N,N,N: 分别表示是否打印条形码的文本(前两个 N 表示不打印文本,最后一个 N 表示不打印校验位)。
^FD"123456"^FS
^FD: 表示“Field Data”,用于指定要编码的数据。
^FS: 表示字段的结束。
一个条码指令结束
^FO100,400
^FO: 定义下一个字段的起始位置。
100,400: 新字段的左上角位置在横坐标 100 和纵坐标 400。
^A@N,60,40
^A@: 指定字体类型(使用外部字体)。
N,60,40: 字体的高度和宽度分别为 60 和 40 点。
^FD"456789"^FS
^FD: 再次指定要打印的数据
^FS: 字段结束。
^XZZPL 指令的结束标志
可以使用官网进行预览,ZPL指令预览:
Labelary Online ZPL Viewerhttps://labelary.com/viewer.html使用提供的API将指令转为图片Labelary ZPL Web Service
https://labelary.com/service.html#csharp
string zplCode = "^XA^FO100,100^BY4^BCN,250,N,N,N^FD123456^FS"; // 替换成您的ZPL代码
using (var client = new HttpClient())
{
var response = await client.GetAsync($"https://api.labelary.com/v1/printers/8dpmm/labels/8x3/0/?qz={Uri.EscapeDataString(zplCode)}");
if (response.IsSuccessStatusCode)
{
var stream = await response.Content.ReadAsStreamAsync();
using (var fileStream = new FileStream("D:/条形码/barcode.png", FileMode.Create, FileAccess.Write))
{
await stream.CopyToAsync(fileStream);
}
picturebox.Image = new System.Drawing.Bitmap(stream);
}
else
{
MessageBox.Show("未能成功获取条形码图片");
}
}