private Image PrintAndSave(SaleInfo saleInfo, string writeToPath,
            string clientName, string actualPoint, string payed, string cardNo, bool openPrintedCoupon, bool printOnCollect, bool printOnRedeem)
        {
            Image bitmap = Resources.Kuponi;
            using (bitmap)
            using (var graphics = Graphics.FromImage(bitmap))
            using (var font = new Font("Arial", 7, FontStyle.Regular))
            {
                //data dhe ora
                graphics.DrawString(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), font,
                    Brushes.Black, 90, 270);

                //fatura id
                graphics.DrawString(saleInfo.Id.ToString(), font, Brushes.Black, 515, 267);

                //Emri dhe mbiemri
                graphics.DrawString(clientName, font, Brushes.Black, 180, 315);

                //nr karteles
                graphics.DrawString(cardNo.ToUpper(), font, Brushes.Black, 260, 350);

                //PAGESA
                graphics.DrawString(payed, font, Brushes.Black, 580, 520);

                //PIKET VLERA MONETARE
                graphics.DrawString(saleInfo.RedeemedMonetaryValue.ToString("C", CultureInfo.GetCultureInfo("de-DE")),
                font, Brushes.Black, 580, 555);

                //TOTALI
                graphics.DrawString(saleInfo.Total.ToString("C", CultureInfo.GetCultureInfo("de-DE")),
                font, Brushes.Black, 580, 600);

                //GJENDJA E PIKEVE

                var availablePoints = Convert.ToInt32(actualPoint);

                var previousPoints = (availablePoints + saleInfo.RedeemedPoints) - saleInfo.RewardedPoints;

                graphics.DrawString(previousPoints.ToString(),
                  new Font("Arial", 7, FontStyle.Bold), Brushes.Black, 580, 770);

                //PIKE TE PERDORURA
                //-150 (1.5 euro)
                graphics.DrawString(string.Format("-{0} ({1})", saleInfo.RedeemedPoints,
                    saleInfo.RedeemedMonetaryValue.ToString("C", CultureInfo.GetCultureInfo("de-DE"))), font,
                    Brushes.Black, 580, 815);

                //PIKE TE FITUARA
                graphics.DrawString(saleInfo.RewardedPoints.ToString(), font, Brushes.Black, 580, 855);

                //GJENDJA E RE E PIKEVE

                graphics.DrawString(actualPoint,
                    new Font("Arial", 7, FontStyle.Bold), Brushes.Black, 580, 895);

                bool exists = System.IO.Directory.Exists(writeToPath);

                if (!exists)
                {
                    try
                    {
                        System.IO.Directory.CreateDirectory(writeToPath);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Nuk mund te krijohet folderi: " + writeToPath + ". Ju lutemi krijojeni ate manualisht, ne menyre qe te ruhen kuponat.");
                    }
                }
                // ruje qele printo ne default printer

                string couponFileName = string.Format("grumbullim-{0}.jpg", saleInfo.Id);

                if (saleInfo.RedeemedPoints > 0)
                {
                    couponFileName = string.Format("shfrytezim-{0}.jpg", saleInfo.Id);
                }

                var filename = Path.Combine(writeToPath, couponFileName);
                printFilename = filename;

                bitmap.Save(filename);

                if (saleInfo.RedeemedPoints != 0 && printOnRedeem)
                {
                    PrintDocument pd = new PrintDocument();
                    pd.PrintPage += PrintPageEvent;
                    pd.Print();

                    if (openPrintedCoupon)
                        Process.Start(filename);
                }
                else if (printOnCollect)
                {
                    PrintDocument pd = new PrintDocument();
                    pd.PrintPage += PrintPageEvent;
                    pd.Print();

                    if (openPrintedCoupon)
                        Process.Start(filename);
                }

                //print

            }
            return bitmap;
        }
 public CouponPrinter(SaleInfo sale, string writeToPath, string clientName,
     string acctualPoints, string payed, string cardNo, bool openPrintedCoupon, bool printOnCollect, bool printOnRedeem)
 {
     WriteToPath = writeToPath;
     PrintAndSave(sale, writeToPath, clientName, acctualPoints, payed, cardNo, openPrintedCoupon, printOnCollect, printOnRedeem);
 }