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); }
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)); } }