C# winform 怎么调用斑马条码打印机批量打印

最好有例子可以看。
2025-04-06 13:48:10
推荐回答(1个)
回答1:

任何打印机对于C#操作都是一样的.我估计你的难点在乎读写条形码,和批量上.

这是我练习的条形码小Demo.

 private void btnOk_Click(object sender, EventArgs e)//生成
        {
            Regex rg = new Regex("^[0-9]{13}$");
            if (!rg.IsMatch(txtNum.Text))
            {
                MessageBox.Show("本例子采用EAN_13编码,需要输入13位数字");
                return;
            }
            try
            {
                MultiFormatWriter mutiWriter = new com.google.zxing.MultiFormatWriter();
                ByteMatrix bm = mutiWriter.encode(txtNum.Text, com.google.zxing.BarcodeFormat.EAN_13, 363, 150);
                Bitmap img = bm.ToBitmap();
                pbImg.Image = img;
                //自动保存图片到当前目录 
                if (cbSave.Checked)
                {
                    string filename = System.Environment.CurrentDirectory + "\\EAN_13.jpg";
                    img.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);
                    MessageBox.Show("图片已保存到:" + filename);
                }
            }
            catch (Exception ee)
            { MessageBox.Show(ee.Message); }
        }
        private void btnRead_Click(object sender, EventArgs e)//读取
        {
            if (!File.Exists(System.Environment.CurrentDirectory + "\\EAN_13.jpg"))
            {
                MessageBox.Show(System.Environment.CurrentDirectory + "\\EAN_13.jpg", " 缺少文件!");
                return;
            }
            MultiFormatReader mutiReader = new com.google.zxing.MultiFormatReader();
            Bitmap img = (Bitmap)Bitmap.FromFile(System.Environment.CurrentDirectory + "\\EAN_13.jpg");
            if (img == null)
                return;
            LuminanceSource ls = new RGBLuminanceSource(img, img.Width, img.Height);
            BinaryBitmap bb = new BinaryBitmap(new com.google.zxing.common.HybridBinarizer(ls));
            Result r = mutiReader.decode(bb);
            txtNum.Text = r.Text;
        }

已附上源码附件

如需要循环生成条形码,只需要循环调用这些代码即可.

另C#打印,这只是文本打印,仅供参考

 public void Print(string filename)//filename是你要打印的字符串
        {
            try
            {
                PrintDocument printDoc = new PrintDocument();
                printDoc.PrintPage += printDoc_PrintPage;
                printDoc.Print();
            }
            finally
            {
                sr.Close();
            }
        }
        void printDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            string line = null;
            string[] items = txtContent.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
            //设置一页的行数=打印区域的高度除以字体高度.
            float pageLine = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);
            //循环打印每一行
            for (int i = 0; i < pageLine && i < items.Length; i++)
            {
                line = items[i];
                float singleLine = e.MarginBounds.Top + (i * printFont.GetHeight(e.Graphics));
                e.Graphics.DrawString(line, printFont, Brushes.Black, e.MarginBounds.Left, singleLine);
            }
            //e.HasMorePages = true; //继续打印,用于内容超过一张纸的情况下      在pageLine和for的items数据那还得自己算.下次打items中剩余的      
            e.HasMorePages = false;//结束打印
        }