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 = IntegramREST.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);

        }