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 DPI
            float 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());
            }
        }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sdkdslx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值