C#代码生成一维码(条形码)的两种方法

一.使用 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 Viewericon-default.png?t=N7T8https://labelary.com/viewer.html使用提供的API将指令转为图片Labelary ZPL Web Serviceicon-default.png?t=N7T8https://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("未能成功获取条形码图片");
     }
 }

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值