C# 标签(条码)的打印与设计(一)

     相信目前稍有规模的公司已进入或正在进入信息化之中,尤其在制造企业中,少不了一个条码的打印功能,而这类应用大多是使用斑马打印机,所以就会遇到了怎么打印的问题了。本人也已经从事ERP,MES等系统多年,也有去了解过一些公司的做法。知道条码的打印的一些做法,下面我们来谈一谈,如有错误之处,请大家不吝指出。

  1.一些规模小的企业是用标签设计软件做好模板,在标签设计软件中打印,这种办法不用写代码,但对大多数公司来说并不适合,因为企业的数据动态的比较多,如果纯手工修改打印肯定不能接受,于是唯一的出路只能是代码解决问题。

      2.首先做好模板,然后替换其中动态变化的内容为变量名,在代码中动态替换变量,再把指令输出至打印机而在一开这个博客的时候我就写了一篇ZPL如何打印中文信息的随笔(大家可以去参考一下)。

  3.还有就是用绘图方式打印至打印机的,也叫GDI打印,这种可以用报表工具画好标签,运行报表时,把结果输出位图,再发送至打印机。(这种需要较新的打印机)

上面的这些做法都有其缺点。第1是手动,工作量大;第二是需要了解斑马打印指令(新人不便接手);第三是较新的做法,大多公司不是采取这种方式;而我要介绍的是另一种做法,而这种做法比较接近第二类,但又不需要开发者了解斑马指令(EPL/ZPL),而且就算再老的斑马打印机也能用,在速度和质量上都有其优越性。最最主要的是:1.代码相当的少(实际是封了主要一些方法);2.支持ZPL,EPL两种语言;3.支持中文/日文打印;4.无须理会打印机的连接类型;5.支持WINFORM和WEBFORM的打印。在项目之中只需要简单的引用和书写代码即可达到你想要的结果。 下面我们首先谈一下如何打印这个条码,而打印这一块将会放到下一篇随笔,有兴趣的后续可以留意一下。

 

由于是一个DEMO,做得非常的简单。

 

 

打印出来的结果。

下面我们来分析一下代码。

代码是相当的简单。

  View Code

 

大家看一下代码,是否非常的简单呢? 这里主要是提供几个打印信息便可(打印语言,打印机。还有就是标签定义文档/字库路径),根本不太需要了解斑马的语言就可以轻易打印出来想要的条码。那么问题来了,到底如何设计这个模板呢? 敬请留意下一篇文章,也是相当的容易的。做为程序开发人员,肯定要想办法减轻工作量,以获得足够多的业余时间做自己喜欢做的事。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,您可以使用以下代码来打印一个50x60的标签并包含CODE128条码: ```c# using System; using System.Drawing.Printing; using System.Text; class Program { static void Main(string[] args) { // 设置打印机名称 string printerName = "Your Printer Name"; // 创建打印对象 PrintDocument pd = new PrintDocument(); pd.PrinterSettings.PrinterName = printerName; // 设置打印事件 pd.PrintPage += (sender, e) => { // 设置打印区域 int x = 0, y = 0; int width = 500, height = 600; // 画边框 e.Graphics.DrawRectangle(Pens.Black, x, y, width, height); // 打印条码 string barcodeData = "1234567890"; Code128BarcodeDraw barcodeDraw = BarcodeDrawFactory.Code128WithChecksum; Image barcodeImage = barcodeDraw.Draw(barcodeData, 60); // 计算条码位置 int barcodeX = x + (width - barcodeImage.Width) / 2; int barcodeY = y + (height - barcodeImage.Height) / 2 - 50; // 绘制条码 e.Graphics.DrawImage(barcodeImage, barcodeX, barcodeY); // 打印文字 Font font = new Font("Arial", 12); string text = "Label Text"; SizeF textSize = e.Graphics.MeasureString(text, font); int textX = x + (width - (int)textSize.Width) / 2; int textY = y + height - (int)textSize.Height - 10; e.Graphics.DrawString(text, font, Brushes.Black, textX, textY); }; // 开始打印 pd.Print(); } } public static class BarcodeDrawFactory { private static Lazy<BarcodeDraw> lazy = new Lazy<BarcodeDraw>(() => BarcodeDrawFactory.SVGDrawer); public static BarcodeDraw Default { get { return lazy.Value; } } public static BarcodeDraw Code128WithChecksum { get { return new BarcodeDrawCode128Checksum(); } } public static BarcodeDraw SVGDrawer { get { return new BarcodeDrawSVG(); } } } ``` 这段代码使用了一个名为 `BarcodeDraw` 的库,它可以帮助我们创建条码。在这个例子中,我们创建了一个 CODE128 条码,并将其放置在标签的中央。同时,我们还打印了一些文本,以及一个边框。 请注意将 `Your Printer Name` 替换为您的打印机名称。另外,您需要在项目中导入 `BarcodeLib` 库。您可以通过 NuGet 安装它。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值