Exemplo n.º 1
0
 public MagickBarcodeEncoder(BarcodeFormatEnum barcodeFormat)
 {
     _writer = new MagickBarcodeWriter()
     {
         Format  = (BarcodeFormat)barcodeFormat,
         Options = new EncodingOptions
         {
             Width       = 512,
             Height      = 512,
             Margin      = 1,
             PureBarcode = true
         },
         Renderer = new MagickImageRenderer()
     };
 }
Exemplo n.º 2
0
        public async Task GenerateQrCode(string contactName)
        {
            IUserModel             user       = _storageService.GetUser();
            string                 publicKey  = RsaKeyTools.ExtractPublicKey(user.KeyPair);
            Tuple <string, string> pkElements = RsaKeyTools.DecomposePublicKey(publicKey);

            string contents = ComposeQrData(user.Id, contactName, pkElements.Item1, pkElements.Item2);

            IBarcodeWriter writer = QrTools.GetQrWriter();

            var matrix = writer.Encode(contents);
            var wb     = writer.Write(matrix);

            await PictureLibraryTools.SaveWriteableBitmap(wb, string.Format(QrCodeFileName, contactName));
        }
Exemplo n.º 3
0
        public JObject QrCodeGenerator()
        {
            JObject jobj;
            string  baseString       = "";
            string  conf_code        = "";
            string  overlayImagePath = System.Web.HttpContext.Current.Server.MapPath("/images/") + ConfigurationManager.AppSettings["QrCodeOverlayImage"].ToString();

            conf_code = "grpTalk" + System.Guid.NewGuid().ToString();
            conf_code = conf_code.Replace("-", "").Replace(" ", "");
            //GENERATE_QR_CODE("12345678910111213456789987456321456987456321");
            ZXing.Common.BitMatrix bitmatrix = default(ZXing.Common.BitMatrix);
            Bitmap         bmp_image         = default(Bitmap);
            string         qr_to_str         = null;
            IBarcodeWriter writer            = default(IBarcodeWriter);


            try
            {
                writer = new BarcodeWriter
                {
                    Format  = BarcodeFormat.QR_CODE,
                    Options = new ZXing.QrCode.QrCodeEncodingOptions
                    {
                        Margin          = 0,
                        Width           = 500,
                        Height          = 500,
                        ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.L
                    }
                };
                qr_to_str = conf_code;//CryptoUtil.Encrypt(conf_code);
                bitmatrix = writer.Encode(qr_to_str);
                bmp_image = new Bitmap(bitmatrix.Width, bitmatrix.Height);
                for (int i = 0; i <= bmp_image.Height - 1; i++)
                {
                    for (int j = 0; j <= bmp_image.Width - 1; j++)
                    {
                        if (bitmatrix[i, j])
                        {
                            bmp_image.SetPixel(i, j, Color.Black);
                        }
                        else
                        {
                            bmp_image.SetPixel(i, j, Color.White);
                        }
                    }
                }
                Bitmap overlay = new Bitmap(overlayImagePath);

                int deltaHeigth = bmp_image.Height - overlay.Height;
                int deltaWidth  = bmp_image.Width - overlay.Width;

                Graphics g = Graphics.FromImage(bmp_image);
                g.DrawImage(overlay, new Point(deltaWidth / 2, deltaHeigth / 2));

                MemoryStream stream = new MemoryStream();
                bmp_image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                byte[] imageBytes = stream.ToArray();
                baseString = Convert.ToBase64String(imageBytes);
                jobj       = new JObject(
                    new JProperty("Success", true),
                    new JProperty("Message", "Success"),
                    new JProperty("ConfCode", conf_code),
                    new JProperty("BaseString", baseString));
            }
            catch (Exception ex)
            {
                HttpContext.Current.Response.Write(ex.ToString());
                jobj = new JObject(new JProperty("Success", false),
                                   new JProperty("Message", "Something Went Wrong"));
            }
            Pusher         pusherObj      = new Pusher("99686", "ed522d982044e2680be6", "2d2388bc3972643d5b5b");
            ITriggerResult PusherResponse = null;

            PusherResponse = pusherObj.Trigger(conf_code, "client-myEvent", new
            {
                AccessToken = "outbound"
            });
            Logger.TraceLog("pusher response :" + PusherResponse.ToString());
            return(jobj);
        }
Exemplo n.º 4
0
        public int PrintRefundSlip(JObject slipData)
        {
            int nRet = 0;

            //string filePath_QR = Directory.GetCurrentDirectory() + "/../Image/gtf_qr.bmp";
            //string filePath_LOGO = Directory.GetCurrentDirectory() + "/../Image/gtf_logo.bmp";
            //string filePath_ROUND_LOGO = Directory.GetCurrentDirectory() + "/../Image/gtf_logo_round.bmp";
            //string filePath_Combine = Directory.GetCurrentDirectory() + "/../Image/combine_QR.jpg";

            if (Constants.PRINTER_SELECT_TYPE == 0) //일반프린터
            {
                writer = new BarcodeWriter
                {
                    Format  = BarcodeFormat.QR_CODE,
                    Options = new QrCodeEncodingOptions
                    {
                        Width  = 120,
                        Height = 120
                    }
                };
            }
            else if (Constants.PRINTER_SELECT_TYPE == 1) //영수증 프린터
            {
                writer = new BarcodeWriter
                {
                    Format  = BarcodeFormat.QR_CODE,
                    Options = new QrCodeEncodingOptions
                    {
                        Width  = 160,
                        Height = 160
                    }
                };
            }


            qrbmp = new Bitmap(writer.Write(slipData["buy_serial_no"].ToString()));
            using (var stream = new FileStream(Constants.filePath_QR, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                ImageConverter converter = new ImageConverter();
                byte[]         qrBytes   = (byte[])converter.ConvertTo(qrbmp, typeof(byte[]));
                stream.Write(qrBytes, 0, qrBytes.Length);
                stream.Close();
            }


            if (Constants.PRINTER_SELECT_TYPE == 0) //일반프린터
            {
                bmap = new Bitmap(214, 120);
                Graphics g = Graphics.FromImage(bmap);

                img  = Bitmap.FromFile(Constants.filePath_ROUND_LOGO_NORMAL);
                img2 = Bitmap.FromFile(Constants.filePath_QR);

                g.DrawImage(img, 0, 0);
                g.DrawImage(img2, 94, 0);

                bmap.Save(Constants.filePath_Combine, ImageFormat.Jpeg);
                bmap.Dispose();
                img.Dispose();
                img2.Dispose();
            }
            else if (Constants.PRINTER_SELECT_TYPE == 1) //영수증 프린터
            {
                bmap = new Bitmap(126 + 160, 160);
                Graphics g = Graphics.FromImage(bmap);

                img  = Bitmap.FromFile(Constants.filePath_ROUND_LOGO);
                img2 = Bitmap.FromFile(Constants.filePath_QR);

                g.DrawImage(img, 0, 0);
                g.DrawImage(img2, 126, 0);

                bmap.Save(Constants.filePath_Combine, ImageFormat.Jpeg);
                bmap.Dispose();
                img.Dispose();
                img2.Dispose();
            }


            GTF_ReceiptPrinter dd  = new GTF_ReceiptPrinter();
            WindowPrinterUtil  wpu = new WindowPrinterUtil();

            if (Constants.PRINTER_SELECT_TYPE == 0) //일반프린터
            {
                //dd.PrintHotelRefundSlip_Printer(Constants.PRINTER_OPOS_TYPE, Constants.PRINTER_OPOS_TYPE);
                wpu.PrintRefundSlip(slipData);
            }
            else if (Constants.PRINTER_SELECT_TYPE == 1) //영수증 프린터
            {
                try {
                    Utils           util = new Utils();
                    System.DateTime sd   = new System.DateTime(Int32.Parse(slipData["sale_date"].ToString().Substring(0, 4)),
                                                               Int32.Parse(slipData["sale_date"].ToString().Substring(4, 2))
                                                               , Int32.Parse(slipData["sale_date"].ToString().Substring(6, 2)));
                    sd = sd.AddMonths(3);
                    Encoding enc = Encoding.Default;
                    //Constants.PRINTER_OPOS_TYPE = "BIXOLON350";
                    Boolean bOpen = dd.OpenOPOS(Constants.PRINTER_OPOS_TYPE);

                    StringBuilder sb = new StringBuilder();
                    dd.PrintOPOS_Text(ESC + "|cA" + ESC + "|N" + CRLF);

                    //로고는 이미지로 대체
                    //dd.PrintOPOS_Text( ESC + "|2C" + ESC + "|cA" +ESC + "!0" + "GLOBAL TAX FREE "  + CRLF);
                    dd.PrintOPOS_BMP(Constants.filePath_LOGO);


                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.PrintOPOS_Text(ESC + "|cA" + ESC + "!0" + "숙 박 용 역" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "Hotel Tax Refund" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "This Document is authorized by Korea NTS" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "국세청장이 인정한 서식임" + CRLF);

                    dd.PrintOPOS_BMP(Constants.filePath_Combine);
                    //dd.PrintOPOS_BMP(filePath_QR);
                    //dd.PrintOPOS_BMP(filePath_ROUND_LOGO);
                    //dd.PrintOPOS_BMP(filePath_Combine2);
                    //bool bTest = true;
                    //if (bTest)
                    //{
                    //    dd.PrintOPOS_Text(ESC + "|N" + "Guest's Signature" + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF);
                    //    return 0;
                    //}

                    dd.font_change_Small();

                    string strBuySerialNo = slipData["buy_serial_no"].ToString();
                    dd.PrintOPOS_Text(ESC + "|N" + "[email protected]            www.global-taxfree.com" + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "|N" + "Contact Us : +82 2 518 0837" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "단말기 ID " + slipData["tml_id"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "구매일련번호      " + strBuySerialNo.Substring(0, 2)
                                      + "-" + strBuySerialNo.Substring(2, 5)
                                      + "-" + strBuySerialNo.Substring(7, 5)
                                      + "-" + strBuySerialNo.Substring(12, 2)
                                      + "-" + strBuySerialNo.Substring(14)
                                      + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "호텔/Hotel" + CRLF);
                    String strBizPermitNo = slipData["biz_permit_no"].ToString();
                    strBizPermitNo = strBizPermitNo.Substring(0, 3) + "-" + strBizPermitNo.Substring(3, 2) + "-" + strBizPermitNo.Substring(5);
                    dd.PrintOPOS_Text(ESC + "|N" + "사업자번호 " + strBizPermitNo.PadLeft(nPaddingLen_big - 11, ' ') + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "관광사업등록번호 " + "".PadLeft(nPaddingLen_big - 17 - enc.GetByteCount(slipData["company_reg_no"].ToString()), ' ') + slipData["company_reg_no"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "상호 " + "".PadLeft(util.getPaddingLen(nPaddingLen_big - 5
                                                                                         - enc.GetByteCount(slipData["shop_name"].ToString())), ' ') + slipData["shop_name"].ToString() + CRLF);

                    int nCeoNameCnt = enc.GetByteCount(slipData["ceo_name"].ToString());
                    dd.PrintOPOS_Text(ESC + "|N" + "대표자 " + "".PadLeft(nPaddingLen_big - 7
                                                                       - enc.GetByteCount(slipData["ceo_name"].ToString()), ' ') + slipData["ceo_name"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "주소 " + "".PadLeft(util.getPaddingLen(nPaddingLen_big - 5 - enc.GetByteCount(slipData["shop_addr"].ToString())), ' ')
                                      + slipData["shop_addr"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "연락처 " + slipData["shop_phone"].ToString().PadLeft(nPaddingLen_big - 7, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    string strDate = slipData["sale_date"].ToString();
                    strDate = strDate.Substring(0, 4) + "-" + strDate.Substring(4, 2) + "-" + strDate.Substring(6, 2);
                    dd.PrintOPOS_Text(ESC + "|N" + "Date of sale " + strDate.PadLeft(nPaddingLen_big - 13, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "숙박내역/Description of Accommodation " + CRLF);
                    if (slipData["buyList"] != null)
                    {
                        if (slipData["buyList"] is JArray)
                        {
                            JArray arrBuyData = (JArray)slipData["buyList"];
                            for (int i = 0; i < arrBuyData.Count(); i++)
                            {
                                dd.PrintOPOS_Text((i + 1) + ". " + arrBuyData[i]["goods_name"].ToString()
                                                  + (arrBuyData[i]["qty"].ToString() + " Nights")
                                                  .PadLeft(nPaddingLen_big - enc.GetByteCount((i + 1) + ". " + arrBuyData[i]["goods_name"].ToString()), ' ')
                                                  + CRLF);
                                dd.PrintOPOS_Text("   공급가격 Payment(Inc.Tax) " + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(arrBuyData[i]["sales_amount"].ToString())).PadLeft(nPaddingLen_big - 29, ' ') + CRLF);
                                dd.PrintOPOS_Text("   부가세   V.A.T " + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(arrBuyData[i]["tax_amount"].ToString())).PadLeft(nPaddingLen_big - 18, ' ') + CRLF);
                            }
                        }
                    }

                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text("합계       Total " + CRLF);

                    dd.PrintOPOS_Text("공급가격   Payment(Inc.Tax) " + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(slipData["sales_amount"].ToString())).PadLeft(nPaddingLen_big - 28, ' ') + CRLF);
                    dd.PrintOPOS_Text("부가세     V.A.T" + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(slipData["tax_amount"].ToString())).PadLeft(nPaddingLen_big - 16, ' ') + CRLF);
                    dd.PrintOPOS_Text("환급액     Refund Amount" + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(slipData["refund_amount"].ToString())).PadLeft(nPaddingLen_big - 24, ' ') + CRLF);
                    dd.PrintOPOS_Text("환급유효기간/Refund Expiry date " + sd.ToString("yyyy-MM-dd").PadLeft(nPaddingLen_big - 33, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "투숙객/GUEST Your Passport Info in English" + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "|N" + "Passport Full Name " + CRLF);
                    String passportName = slipData["passport_name"] != null ? slipData["passport_name"].ToString().PadLeft(nPaddingLen_big, ' ') :"";
                    String passportNat  = slipData["passport_nat"] != null ? slipData["passport_nat"].ToString() : "";
                    String passportNo   = slipData["passport_no"] != null ? slipData["passport_no"].ToString() :"";

                    dd.PrintOPOS_Text(ESC + "|N" + passportName + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Passport No " + passportNo.PadLeft(nPaddingLen_big - 12, ' ') + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Nationality " + passportNat.PadLeft(nPaddingLen_big - 12, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();

                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "환급수단/Refund Option " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "[  ]Credit Card (Visa/Master/JCB/CUP)" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Card No." + CRLF + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "[  ]QQ Number" + CRLF + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "[  ]Alipay" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "(Alipay Mobile phone number 11digits)" + CRLF + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();

                    //출력데이터 추가

                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + ESC + "|uC" + "Consent to collect, use and disclose" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + ESC + "|uC" + "of personal information" + CRLF);

                    dd.PrintOPOS_Text(ESC + "|N" + "1. Personal Information Recipients" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " Hotel Tax Refund Processing Government " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " organizations" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "2. Purpose of collection and use of personal" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " information" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - To confirm identification and check departure " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " for V.A.T. refund of foreign tourists received " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " hotel accommodation." + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "3. Categories for collecting personal information" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - Personal Information : Name, Date of Birth, " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " Nationality, Passport No., Date of Departure," + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " Date of arrival" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - Unique Identification Information : Passport " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " No." + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "4. Period of holding and using personal " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " information" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - The taxation period which includes The date " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " when the V.A.T. refund or remittance is " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " received" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "5. Withdrawal of consent and contents of " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " disadvantage" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - You have right to withdraw consents.However, " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " consequence follows(You may only receive V.A.T. " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " refund at the refund counter within the airport  " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " or port of departure)" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - Personal information will not be disclosed " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " for any other collected purpose" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "I will consent to disclosure of personal " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "information." + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "I will consent to disclosure of unique " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "identification information. " + CRLF);

                    //String strCurrntDate = DateTime.Now.ToString("yyyy.MM.dd");

                    String strCurrntDate = slipData["sale_date"].ToString().Substring(0, 4) + "." + slipData["sale_date"].ToString().Substring(4, 2) + "." + slipData["sale_date"].ToString().Substring(6, 2);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + strCurrntDate + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Name " + passportName.Trim().PadLeft(nPaddingLen_big - 5, ' ') + CRLF);

                    //2018.04.03 영수증프린터 출력 데이터 변경
                    //dd.PrintOPOS_Text(ESC + "|N" + "I agree to voluntarily provide personal INFO." + CRLF + CRLF);
                    //dd.PrintOPOS_Text(ESC + "|N" + "Guest's Signature" + CRLF + CRLF );
                    dd.PrintOPOS_Text(ESC + "|N" + "Signature" + CRLF + CRLF);
                    if (slipData["sign_img"] != null && !"".Equals(slipData["sign_img"].ToString().Trim()))
                    {
                        byte[]         sign_buff      = System.Convert.FromBase64String(slipData["sign_img"].ToString());
                        ImageConverter imageConverter = new ImageConverter();
                        Image          image          = (Image)imageConverter.ConvertFrom(sign_buff);
                        Image          resizeImage    = new Bitmap(image, new Size(360, 96));
                        resizeImage.Save(Constants.filePath_Sign, ImageFormat.Jpeg);
                        image.Dispose();
                        resizeImage.Dispose();
                        dd.PrintOPOS_BMP(Constants.filePath_Sign);
                    }
                    else
                    {
                        dd.PrintOPOS_Text(CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF);
                    }
                    dd.PrintOPOS_Text(CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "ver." + Properties.Resources.appVer + CRLF + CRLF);
                    dd.PrintOPOS_Text(CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF);
                }
                catch (Exception e)
                {
                    m_Logger.Error(e.Message, e);
                    Console.WriteLine(e.Message);
                }finally
                {
                    if (dd != null)
                    {
                        dd.CusPaper();
                        dd.CloseOPOS();
                    }
                    if (writer != null)
                    {
                        writer = null;
                    }
                    if (qrbmp != null)
                    {
                        qrbmp.Dispose();
                        qrbmp = null;
                    }
                    if (bmap != null)
                    {
                        bmap.Dispose();
                        bmap = null;
                    }
                    if (img != null)
                    {
                        img.Dispose();
                        img = null;
                    }
                    if (img2 != null)
                    {
                        img2.Dispose();
                        img2 = null;
                    }
                }
            }

            try
            {
                if (System.IO.File.Exists(Constants.filePath_QR))
                {
                    System.IO.File.Delete(Constants.filePath_QR);
                }
                if (System.IO.File.Exists(Constants.filePath_Combine))
                {
                    System.IO.File.Delete(Constants.filePath_Combine);
                }
                if (System.IO.File.Exists(Constants.filePath_Sign))
                {
                    System.IO.File.Delete(Constants.filePath_Sign);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(nRet);
        }