private List <GraphicsInfo> CreateGraphicsInfo(ZebraCardGraphics graphics, Dictionary <PrintType, string> imageInfo, CardSide side)
        {
            List <GraphicsInfo> graphicsInfoList = new List <GraphicsInfo>();

            foreach (PrintType type in imageInfo.Keys)
            {
                graphics.Initialize(0, 0, OrientationType.Landscape, type, -1);

                if (type == PrintType.Overlay && imageInfo[type] == null)
                {
                    GraphicsInfo graphicsInfo = new GraphicsInfo {
                        Side        = side,
                        PrintType   = type,
                        GraphicType = GraphicType.NA
                    };
                    graphicsInfoList.Add(graphicsInfo);
                }
                else
                {
                    byte[] imageData = File.ReadAllBytes(imageInfo[type]);
                    graphics.DrawImage(imageData, 0, 0, 0, 0, RotationType.RotateNoneFlipNone);
                    graphicsInfoList.Add(BuildGraphicsInfo(graphics.CreateImage(), side, type));
                }

                graphics.Clear();
            }

            return(graphicsInfoList);
        }
        private List <GraphicsInfo> DrawGraphics(ZebraCardPrinter zebraCardPrinter, DataTable data)
        {
            // Generate image data
            ZebraCardImageI zebraCardImage = null;

            //byte[] fontFields = System.Text.Encoding.ASCII.GetBytes("Arial");

            List <GraphicsInfo> graphicsData = new List <GraphicsInfo>();

            using (ZebraGraphics graphics = new ZebraCardGraphics(zebraCardPrinter))
            {
                if (rdoAmbasCaras.Checked)
                {
                    // Front side color
                    zebraCardImage    = DrawCarnetFront(graphics, PrintType.Color, data);
                    pictureBox1.Image = ByteToImage(zebraCardImage.ImageData);

                    //zebraCardImage = DrawImage(graphics, PrintType.Color, imageData, 0, 0, 450, 150);
                    //graphics.DrawImage(imageData, 0, 450, 150, 0, RotationType.RotateNoneFlipXY);
                    //zebraCardImage = graphics.CreateImage();
                    graphicsData.Add(AddImage(CardSide.Front, PrintType.Color, 0, 0, -1, zebraCardImage));
                    graphics.Clear();
                    //// Front side full overlay
                    graphicsData.Add(AddImage(CardSide.Front, PrintType.Overlay, 0, 0, 1, null));

                    // Back side mono
                    zebraCardImage    = null;
                    zebraCardImage    = DrawCarnetBack(graphics, PrintType.MonoK, data);
                    pictureBox2.Image = ByteToImage(zebraCardImage.ImageData);
                    //zebraCardImage = DrawImage(graphics, PrintType.Color, imageData, 0, 0, 450, 150);
                    //graphics.DrawImage(imageData, 0, 450, 150, 0, RotationType.RotateNoneFlipXY);
                    //zebraCardImage = graphics.CreateImage();
                    graphicsData.Add(AddImage(CardSide.Back, PrintType.MonoK, 0, 0, -1, zebraCardImage));
                    graphics.Clear();
                    //// Back side full overlay
                    graphicsData.Add(AddImage(CardSide.Back, PrintType.Overlay, 0, 0, 1, null));
                }

                if (rdoFrontal.Checked)
                {
                    // Front side color
                    zebraCardImage    = DrawCarnetFront(graphics, PrintType.Color, data);
                    pictureBox1.Image = ByteToImage(zebraCardImage.ImageData);

                    //zebraCardImage = DrawImage(graphics, PrintType.Color, imageData, 0, 0, 450, 150);
                    //graphics.DrawImage(imageData, 0, 450, 150, 0, RotationType.RotateNoneFlipXY);
                    //zebraCardImage = graphics.CreateImage();
                    graphicsData.Add(AddImage(CardSide.Front, PrintType.Color, 0, 0, -1, zebraCardImage));
                    graphics.Clear();
                    //// Front side full overlay
                    graphicsData.Add(AddImage(CardSide.Front, PrintType.Overlay, 0, 0, 1, null));
                }

                if (rdoReverso.Checked)
                {
                    // Back side mono
                    zebraCardImage    = null;
                    zebraCardImage    = DrawCarnetBack(graphics, PrintType.MonoK, data);
                    pictureBox2.Image = ByteToImage(zebraCardImage.ImageData);
                    //zebraCardImage = DrawImage(graphics, PrintType.Color, imageData, 0, 0, 450, 150);
                    //graphics.DrawImage(imageData, 0, 450, 150, 0, RotationType.RotateNoneFlipXY);
                    //zebraCardImage = graphics.CreateImage();
                    graphicsData.Add(AddImage(CardSide.Back, PrintType.MonoK, 0, 0, -1, zebraCardImage));
                    graphics.Clear();
                    //// Back side full overlay
                    graphicsData.Add(AddImage(CardSide.Back, PrintType.Overlay, 0, 0, 1, null));
                }
            }

            return(graphicsData);
        }
Beispiel #3
0
        private async void PrintButton_Click(object sender, RoutedEventArgs e)
        {
            ZebraCardGraphics graphics = null;
            int?       jobId           = null;
            CardSource?cardSource      = null;

            JobStatusControl.ClearLog();
            await printerManager.PerformAction("Sending print job to printer...", (zebraCardPrinter, connection) => {
                if (printerManager.IsPrinterReady(zebraCardPrinter, JobStatusControl))
                {
                    graphics = new ZebraCardGraphics(zebraCardPrinter);

                    List <GraphicsInfo> graphicsData = new List <GraphicsInfo>();

                    if (viewModel.PrintFrontSide)
                    {
                        byte[] frontSideGraphicData = ImageHelper.ConvertImage(ImageHelper.CreateImageFromFile(viewModel.FrontSideGraphicFilename));
                        graphics.Initialize(0, 0, OrientationType.Landscape, viewModel.FrontSidePrintType, System.Drawing.Color.White);
                        graphics.DrawImage(frontSideGraphicData, 0, 0, 0, 0, RotationType.RotateNoneFlipNone);
                        graphicsData.Add(BuildGraphicsInfo(graphics.CreateImage(), CardSide.Front, viewModel.FrontSidePrintType));
                        graphics.Clear();
                    }

                    if (viewModel.PrintFrontSideOverlay)
                    {
                        if (viewModel.FrontSideOverlayGraphicFilename != null)
                        {
                            byte[] frontSideOverlayGraphicData = ImageHelper.ConvertImage(ImageHelper.CreateImageFromFile(viewModel.FrontSideOverlayGraphicFilename));
                            graphics.Initialize(0, 0, OrientationType.Landscape, PrintType.Overlay, System.Drawing.Color.White);
                            graphics.DrawImage(frontSideOverlayGraphicData, 0, 0, 0, 0, RotationType.RotateNoneFlipNone);
                            graphicsData.Add(BuildGraphicsInfo(graphics.CreateImage(), CardSide.Front, PrintType.Overlay));
                            graphics.Clear();
                        }
                        else
                        {
                            graphicsData.Add(BuildGraphicsInfo(null, CardSide.Front, PrintType.Overlay));
                            graphics.Clear();
                        }
                    }

                    if (viewModel.PrintBackSide)
                    {
                        byte[] backSideGraphicData = ImageHelper.ConvertImage(ImageHelper.CreateImageFromFile(viewModel.BackSideGraphicFilename));
                        graphics.Initialize(0, 0, OrientationType.Landscape, PrintType.MonoK, System.Drawing.Color.White);
                        graphics.DrawImage(backSideGraphicData, 0, 0, 0, 0, RotationType.RotateNoneFlipNone);
                        graphicsData.Add(BuildGraphicsInfo(graphics.CreateImage(), CardSide.Back, PrintType.MonoK));
                        graphics.Clear();
                    }

                    cardSource = (CardSource)Enum.Parse(typeof(CardSource), zebraCardPrinter.GetJobSettingValue(ZebraCardJobSettingNames.CARD_SOURCE));

                    jobId = zebraCardPrinter.Print(viewModel.Quantity, graphicsData);
                }
            }, (exception) => {
                string errorMessage = $"Error printing card: {exception.Message}";
                MessageBoxHelper.ShowError(errorMessage);
                JobStatusControl.UpdateLog(errorMessage);
            }, () => {
                if (graphics != null)
                {
                    graphics.Close();
                }
            });

            if (jobId.HasValue && cardSource.HasValue)
            {
                await JobStatusControl.StartPolling(printerManager.Printer, new JobInfo(jobId.Value, cardSource.Value));
            }
        }