• zxing .net 多种条码格式的生成


    下载地址:http://zxingnet.codeplex.com/

    zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便。

    本文主要说明一下多种类型条码的生成。

    适用的场景,标签可视化设计时,自定义条码类型,预览。

    遍历zxing支持的全部条码类型

    if (rb == rb1wm)
                {
                    foreach (BarcodeFormat format in Enum.GetValues(typeof(BarcodeFormat)))
                    {
                        if (format != BarcodeFormat.All_1D)
                            cbxBarcodeFormat.Items.Add(format.ToString());
                    }
                    cbxBarcodeFormat.Items.Remove(BarcodeFormat.QR_CODE.ToString());
                    cbxBarcodeFormat.Items.Remove(BarcodeFormat.AZTEC.ToString());
                    cbxBarcodeFormat.Items.Remove(BarcodeFormat.DATA_MATRIX.ToString());
                    cbxBarcodeFormat.Items.Remove(BarcodeFormat.PDF_417.ToString());
                }
                if (rb == rb2wm)
                {
                    cbxBarcodeFormat.Items.Add(BarcodeFormat.QR_CODE.ToString());
                    cbxBarcodeFormat.Items.Add(BarcodeFormat.AZTEC.ToString());
                    cbxBarcodeFormat.Items.Add(BarcodeFormat.DATA_MATRIX.ToString());
                    cbxBarcodeFormat.Items.Add(BarcodeFormat.PDF_417.ToString());
                }
    

    根据选择的类型生成条码

    Bitmap bitmap = new Bitmap(pbxBarcode.Width, pbxBarcode.Height);
                Graphics g = Graphics.FromImage(bitmap);
                g.Clear(Color.White);
                Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), cbxBarcodeFormat.SelectedItem.ToString());
                try
                {
                    var options = new ZXing.Common.EncodingOptions
                    {
                        PureBarcode = !chxDisplayBarcode.Checked
                    };
                    #region 根据条码类型Write Image 
                    switch (Format)
                    {
                        case BarcodeFormat.QR_CODE:
                            #region QRCode
                            if (cbxErrorLevel.SelectedItem.ToString().Equals("L"))
                                ErrorCorrectionLevel = QR_ErrorCorrectionLevel.L;
                            if (cbxErrorLevel.SelectedItem.ToString().Equals("H"))
                                ErrorCorrectionLevel = QR_ErrorCorrectionLevel.H;
                            if (cbxErrorLevel.SelectedItem.ToString().Equals("M"))
                                ErrorCorrectionLevel = QR_ErrorCorrectionLevel.M;
                            if (cbxErrorLevel.SelectedItem.ToString().Equals("Q"))
                                ErrorCorrectionLevel = QR_ErrorCorrectionLevel.Q;
                            ErrorCorrectionLevel level = null;
                            switch (ErrorCorrectionLevel)
                            {
                                case QR_ErrorCorrectionLevel.H:
                                    level = ZXing.QrCode.Internal.ErrorCorrectionLevel.H;
                                    break;
                                case QR_ErrorCorrectionLevel.M:
                                    level = ZXing.QrCode.Internal.ErrorCorrectionLevel.M;
                                    break;
                                case QR_ErrorCorrectionLevel.L:
                                    level = ZXing.QrCode.Internal.ErrorCorrectionLevel.L;
                                    break;
                                case QR_ErrorCorrectionLevel.Q:
                                    level = ZXing.QrCode.Internal.ErrorCorrectionLevel.Q;
                                    break;
                            }
                            QrCodeEncodingOptions qr_options = new QrCodeEncodingOptions
                            {
                                Margin = 0,
                                DisableECI = true,
                                CharacterSet = "UTF-8",
                                ErrorCorrection = level,
                                PureBarcode = !chxDisplayBarcode.Checked,
                                Width = pbxBarcode.Width,
                                Height = pbxBarcode.Height
                            };
                            var qrWriter = new ZXing.BarcodeWriter();
                            qrWriter.Format = BarcodeFormat.QR_CODE;
                            qrWriter.Options = qr_options;
                            #endregion
                            bitmap = qrWriter.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(qrWriter.Options, Format, bitmap);
                            break;
                        case BarcodeFormat.PDF_417:
                            #region PDF417
                            PDF417EncodingOptions pdf_options = new PDF417EncodingOptions
                            {
                                Margin = 0,
                                DisableECI = true,
                                CharacterSet = "UTF-8",
                                Width = pbxBarcode.Width,
                                Height = pbxBarcode.Height,
                                PureBarcode = !chxDisplayBarcode.Checked
                            };
                            var pdf417Writer = new ZXing.BarcodeWriter();
                            pdf417Writer.Format = BarcodeFormat.PDF_417;
                            pdf417Writer.Options = pdf_options;
                            #endregion
                            bitmap = pdf417Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(pdf417Writer.Options, Format, bitmap);
                            break;
                        case BarcodeFormat.DATA_MATRIX:
                            #region DataMatrix
                            DatamatrixEncodingOptions dataMatrix_options = new DatamatrixEncodingOptions
                            {
                                Margin = 0,
                                SymbolShape = (ZXing.Datamatrix.Encoder.SymbolShapeHint)(Enum.Parse(typeof(ZXing.Datamatrix.Encoder.SymbolShapeHint), cbxDataMatrixOption.SelectedItem.ToString())),
                                Width = pbxBarcode.Width,
                                Height = pbxBarcode.Height,
                                PureBarcode = !chxDisplayBarcode.Checked,
                            };
                            var dataMatrixWriter = new ZXing.BarcodeWriter();
                            dataMatrixWriter.Format = BarcodeFormat.DATA_MATRIX;
                            dataMatrixWriter.Options = dataMatrix_options;
                            #endregion
                            bitmap = dataMatrixWriter.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(dataMatrixWriter.Options, Format, bitmap);
                            break;
                        case BarcodeFormat.AZTEC:
                            #region Aztec
                            ZXing.Aztec.AztecEncodingOptions aztecEncodingOptions = new ZXing.Aztec.AztecEncodingOptions
                            {
                                Margin = 0,
                                ErrorCorrection = 2,
                                PureBarcode = !chxDisplayBarcode.Checked,
                                Layers = 16
                            };
                            var aztecWriter = new ZXing.BarcodeWriter();
                            aztecWriter.Format = BarcodeFormat.AZTEC;
                            aztecWriter.Options = aztecEncodingOptions;
                            #endregion
                            bitmap = aztecWriter.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(aztecWriter.Options, Format, bitmap);
                            break;
                        case BarcodeFormat.CODE_128:
                            #region Code128
                            ZXing.OneD.Code128EncodingOptions code128_options = new ZXing.OneD.Code128EncodingOptions
                            {
                                Margin = 0,
                                PureBarcode = !chxDisplayBarcode.Checked,
                                Width = pbxBarcode.Width,
                                Height = pbxBarcode.Height,
                                ForceCodesetB = true
                            };
                            var code128_Writer = new ZXing.BarcodeWriter();
                            code128_Writer.Format = BarcodeFormat.CODE_128;
                            code128_Writer.Options = code128_options;
                            #endregion
                            bitmap = code128_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(code128_Writer.Options, Format, bitmap);
                            break;
                        case BarcodeFormat.CODABAR:
                            var codeBar_Writer = new ZXing.BarcodeWriter();
                            codeBar_Writer.Format = BarcodeFormat.CODABAR;
                            codeBar_Writer.Options = options;
                            bitmap = codeBar_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.EAN_13:
                            var ean13_Writer = new ZXing.BarcodeWriter();
                            ean13_Writer.Format = BarcodeFormat.EAN_13;
                            ean13_Writer.Options = options;
                            bitmap = ean13_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.EAN_8:
                            var ean8_Writer = new ZXing.BarcodeWriter();
                            ean8_Writer.Format = BarcodeFormat.EAN_8;
                            ean8_Writer.Options = options;
                            bitmap = ean8_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.CODE_39:
                            var code39_Writer = new ZXing.BarcodeWriter();
                            code39_Writer.Format = BarcodeFormat.CODE_39;
                            code39_Writer.Options = options;
                            bitmap = code39_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.UPC_A:
                            var upca_Writer = new ZXing.BarcodeWriter();
                            upca_Writer.Format = BarcodeFormat.UPC_A;
                            upca_Writer.Options = options;
                            bitmap = upca_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.UPC_E:
                            var upce_Writer = new ZXing.BarcodeWriter();
                            upce_Writer.Format = BarcodeFormat.UPC_E;
                            upce_Writer.Options = options;
                            bitmap = upce_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.MSI:
                            var msi_Writer = new ZXing.BarcodeWriter();
                            msi_Writer.Format = BarcodeFormat.MSI;
                            msi_Writer.Options = options;
                            bitmap = msi_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.ITF:
                            var itf_Writer = new ZXing.BarcodeWriter();
                            itf_Writer.Format = BarcodeFormat.ITF;
                            itf_Writer.Options = options;
                            bitmap = itf_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.PLESSEY:
                            var plessey_Writer = new ZXing.BarcodeWriter();
                            plessey_Writer.Format = BarcodeFormat.PLESSEY;
                            plessey_Writer.Options = options;
                            bitmap = plessey_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        case BarcodeFormat.MAXICODE:
                            var code_Writer = new ZXing.BarcodeWriter();
                            code_Writer.Format = BarcodeFormat.MAXICODE;
                            code_Writer.Options = options;
                            bitmap = code_Writer.Write(tbxBarcodeValue.Text.Trim());
                            BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
                            break;
                        default:
                            throw new Exception("条码格式暂不支持!");
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    MessageBox.Show("编码生成错误:" + ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    pbxBarcode.Image = bitmap;
                }
    

      

  • 相关阅读:
    bzoj3687 简单题
    bzoj3992 [SDOI2015]序列统计
    bzoj4602 [Sdoi2016]齿轮
    bzoj4006 [JLOI2015]管道连接
    szoj461【四校联考0430】挑战
    bzoj4037 [HAOI2015]数字串拆分
    javascript 节点的增,删,改,查
    javascript 节点属性详解
    表单操作部分
    文档对象的操作
  • 原文地址:https://www.cnblogs.com/datacool/p/datacool_2017_zxing.html
Copyright © 2020-2023  润新知