C# 生成并打印条形码
由于前段时间接到一个开发小工具的任务,具体是实现输入旧条码,生成规定格式的新条码,并通过条码打印机打印出来的功能,废话不多说,直接上图。
功能描述:选择本地打印机,填入打印数量,扫描枪扫描旧条码,工具会自动打印相应数量、规定格式的新条码出来。
主要代码:
1、生成条码
1 /// <summary> 2 /// 生成条码 3 /// </summary> 4 /// <param name="BarCode"></param> 5 /// <returns></returns> 6 public static Bitmap CreateCode(string BarCode) 7 { 8 // 1.设置条形码规格 9 EncodingOptions options = new EncodingOptions(); 10 options.Height = 80; // 必须制定高度、宽度 11 options.Width = 130; 12 options.PureBarcode = true; // 是否是纯码,如果为 false,则会在图片下方显示数字 13 14 // 2.生成条形码图片并保存 15 BarcodeWriter writer = new BarcodeWriter(); 16 writer.Options = options; 17 writer.Format = BarcodeFormat.CODE_128; //二维码编码 18 19 return writer.Write(BarCode); // 生成图片 20 }
2、排版,打印条码
1 /// <summary> 2 /// 排版,打印条码 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) 7 { 8 Font Fonts = new Font("Microsoft YaHei", 10, FontStyle.Regular); //标题字体 9 Font FontBarCode = new Font("Microsoft YaHei", 9, FontStyle.Regular); //条码字体 10 Brush Brush = new SolidBrush(Color.Black); //画刷 11 12 try 13 { 14 //获取条码上方条码信息 15 DataRow[] dr = Dt.Select("Column2 = \'" + tbJTM.Text + "\'"); 16 if (dr.Length > 0) 17 { 18 var Width = dr[0].ItemArray[3].ToString().Length; 19 20 e.Graphics.DrawString(dr[0].ItemArray[3].ToString(), Fonts, Brush, new Point(155 - Width * 4, 10)); 21 e.Graphics.DrawString(" (New)", Fonts, Brush, new Point(55, 50)); 22 e.Graphics.DrawString(dr[0].ItemArray[6].ToString(), Fonts, Brush, new Point(155 - Width * 4, 70)); 23 24 //使绘图质量最高,即消除锯齿 25 e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; 26 e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 27 e.Graphics.CompositingQuality = CompositingQuality.HighQuality; 28 29 Bitmap bitmap = CreateCode(dr[0].ItemArray[5].ToString()); 30 e.Graphics.DrawImage(bitmap, new Point(65, 90)); 31 32 e.Graphics.DrawString(dr[0].ItemArray[5].ToString(), FontBarCode, Brush, new Point(110, 175)); 33 35 } 36 } 37 catch (Exception ex) 38 { 39 MessageBox.Show(ex.Message); 40 } 41 }
3、打印效果图
具体的条码上方的信息,是通过读取txt文件获取转换的,然后新建项目的时候,我选择的是最低版本的.NetFramework 2.0,这样可以兼容绝大多数电脑的.NetFramework版本.这种方式是我测了好多遍总结出来的,算是最简单的方法,希望对大家有帮助。
死亡如风,常伴吾身~ 哈撒给~