public Task<HttpResponseMessage> PrintBlankTag(int stationId, BlankTag tagInfo) { var tcs = new TaskCompletionSource<HttpResponseMessage>(); try { DispositionDatabase dbDisposition = new DispositionDatabase(); var printer = dbDisposition.GetPrinter(stationId); string printerName = printer.Location.Trim(); //string printerName = "\\\\s1vprint01\\HP LaserJet 400 M401 - IT Office"; //string printerName = "\\\\itlaptopwong\\HP LaserJet 400 M401 - IT Office"; MultiPrintDocument multiDoc; List<PrintDocument> printList = new List<PrintDocument>(); PrintDocument print = new PrintDocument(); print.DefaultPageSettings.Landscape = true; print.DefaultPageSettings.PaperSize = new PaperSize("Label", 400, 600); print.PrintPage += (sender, args) => CreateBlankLabel(tagInfo, args.Graphics); print.EndPrint += (sender, args) => { tcs.TrySetResult(new HttpResponseMessage(HttpStatusCode.OK)); }; printList.Add(print); PrintDocument[] printDocList = new PrintDocument[printList.Count]; for (int i = 0; i < printList.Count; i++) printDocList[i] = printList[i]; multiDoc = new MultiPrintDocument(printDocList); multiDoc.PrinterSettings.PrinterName = printerName; multiDoc.DefaultPageSettings.Landscape = true; multiDoc.DefaultPageSettings.PaperSize = new PaperSize("Label", 400, 600); multiDoc.DocumentName = "Disposition Tag"; if (multiDoc.PrinterSettings.IsValid) multiDoc.Print(); else { tcs.TrySetResult(new HttpResponseMessage(HttpStatusCode.RequestTimeout)); } } catch (Exception ex) { tcs.TrySetResult(new HttpResponseMessage(HttpStatusCode.RequestTimeout)); } return tcs.Task; }
private void CreateBlankLabel(BlankTag tag, Graphics g) { string row = string.Empty; int height = 380; int width = 580; var printSize = new System.Drawing.Size(width, height); var titleFont = new System.Drawing.Font("Segoe UI", 22, FontStyle.Bold, GraphicsUnit.Pixel); var titleFieldFont = new System.Drawing.Font("Calibri", 14, FontStyle.Bold, GraphicsUnit.Pixel); var descFieldFont = new System.Drawing.Font("Calibri", 18, FontStyle.Bold, GraphicsUnit.Pixel); var fieldFont = new System.Drawing.Font("Calibri", 14, FontStyle.Regular, GraphicsUnit.Pixel); var descFont = new System.Drawing.Font("Calibri", 18, FontStyle.Regular, GraphicsUnit.Pixel); var logoFont = new System.Drawing.Font("Calibri", 16, FontStyle.Regular, GraphicsUnit.Pixel); Pen pen = new Pen(System.Drawing.Color.Black, 2); Pen pen2 = new Pen(System.Drawing.Color.Black, 1); //start drawing Image newImage = DispositionREST.Properties.Resources.magna_logo; g.DrawImage(newImage, 40, 40, 200, 60); g.DrawString("Integram Windsor Seating", logoFont, Brushes.Black, 53, 95); string title = "HOLD DISPOSITION TAG"; int xsummaryoffset = 286; int ysummaryoffset = 55; g.DrawRectangle(pen2, xsummaryoffset, ysummaryoffset - 5, 310, 60); g.DrawString("Initiator:", titleFieldFont, Brushes.Black, xsummaryoffset + 10, ysummaryoffset); g.DrawString(tag.Initiator, fieldFont, Brushes.Black, xsummaryoffset + 73, ysummaryoffset); g.DrawString("Date:", titleFieldFont, Brushes.Black, xsummaryoffset + 10, ysummaryoffset + 15); g.DrawString(String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", tag.Date), fieldFont, Brushes.Black, xsummaryoffset + 73, ysummaryoffset + 15); //g.DrawString("Shift:", titleFieldFont, Brushes.Black, xsummaryoffset + 10, ysummaryoffset + 30); //g.DrawString(tag.Shift, fieldFont, Brushes.Black, xsummaryoffset + 73, ysummaryoffset + 30); //description g.DrawString("Description:", descFieldFont, Brushes.Black, 53, ysummaryoffset + 100); //rectangle area Rectangle rectDesc = new Rectangle(160, ysummaryoffset + 100, 440, 250); StringFormat drawFormat = new StringFormat(); g.DrawString(tag.Description, descFont, Brushes.Black, rectDesc, drawFormat); int instructx = (width / 2) - (int)(g.MeasureString(title, titleFont).Width / 2) + 30; g.DrawString(title, titleFont, Brushes.Black, instructx, 300); }