Winform实现条码打印
1、首先需要包含头文件
using ZXing;
using ZXing.Common;
2、根据规则生成条码图片
private Bitmap CreateBarCode(string barCode,int width,int height){try{ // 条形码类型(此处以EAN_13为例)//BarcodeFormat barcodeFormat = BarcodeFormat.EAN_13;BarcodeFormat barcodeFormat = BarcodeFormat.CODE_128;// 条形码的输出文件名string outputFilePath = "output_barcode.png";// 创建条形码编码器实例BarcodeWriter barcodeWriter = new BarcodeWriter{// 设置条形码编码格式Format = barcodeFormat,// 设置条形码的大小(宽度和高度,单位像素)//Options = new ZXing.Common.EncodingOptions { Width = 300, Height = 100 },Options = new EncodingOptions{Width = width,Height = height,Margin = 10 // 设置边距以避免锯齿//PureBarcode = false //是否是纯码,如果为 false,则会在图片下方显示数字}// 可选:设置条形码的颜色(前景色为黑色,背景色为白色)// Options.ForegroundColor = Color.Black;// Options.BackgroundColor = Color.White;};// 生成条形码图像Bitmap barcodeBitmap = barcodeWriter.Write(barCode);var barcodeImage = ResizeBarcode(barcodeBitmap, barcodeWidth / 10, barcodeHeight / 10); // 保存条形码到文件barcodeImage.Save(outputFilePath);return barcodeImage;}catch (Exception ex){MessageBox.Show(ex.Message.ToString());return null;}}public Bitmap ResizeBarcode(Bitmap original, int widthMm, int heightMm){float dpi = printResolution; // 假设打印机分辨率为300 DPIfloat widthPx = widthMm * dpi / 25.4f; // 将毫米转换为像素,25.4mm = 1英寸float heightPx = heightMm * dpi / 25.4f; // 同上return new Bitmap(original, new Size((int)widthPx, (int)heightPx));}
3、打印条码
private void BarPrint(Bitmap barcodeBitmap){try{PrintDocument pd = new PrintDocument();pd.PrintPage += (sender, e) =>{//使绘图质量最高,即消除锯齿e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;e.Graphics.CompositingQuality = CompositingQuality.HighQuality;// 在打印页面上绘制条形码图像e.Graphics.DrawImage(barcodeBitmap, new Point(10, 10));};//预览功能//PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();//printPreviewDialog.Document = pd;//printPreviewDialog.ShowDialog();pd.Print(); }catch (Exception ex){MessageBox.Show(ex.Message.ToString());}}