zoukankan      html  css  js  c++  java
  • 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;
                }
    

      

  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/datacool/p/datacool_2017_zxing.html
Copyright © 2011-2022 走看看