Ejemplo n.º 1
0
        public void PrintImageFromURL(string ImgURL)
        {
            PrintImage pi = new PrintImage();

            pi.Url = ImgURL;
            Send("/PrintImageFromURL", pi);
        }
    public void PrintImageFromURL(HttpListenerContext context)
    {
        PrintImage message = ParseRequest <PrintImage>(context);

        if (message.Url != null)
        {
            GetServer.CloverConnector.PrintImageFromURL(message.Url);
            this.SendTextResponse(context, "");
        }
    }
    public void PrintImage(HttpListenerContext context)
    {
        PrintImage message = ParseRequest <PrintImage>(context);

        if (message.Bitmap != null)
        {
            GetServer.CloverConnector.PrintImage(message.GetBitmap());
            this.SendTextResponse(context, "");
        }
    }
Ejemplo n.º 4
0
        public void PrintImage(System.Drawing.Bitmap bitmap)
        {
            MemoryStream ms = new MemoryStream();

            bitmap.Save(ms, ImageFormat.Png);
            byte[] imgBytes    = ms.ToArray();
            string base64Image = Convert.ToBase64String(imgBytes);

            PrintImage pi = new PrintImage();

            pi.Bitmap = base64Image;
            Send("/PrintImage", pi);
        }
        public void PrintImage(Bitmap bitmap)
        {
            if (websocket != null)
            {
                PrintImageRequestMessage message = new PrintImageRequestMessage();
                PrintImage pi = new PrintImage();

                MemoryStream ms = new MemoryStream();
                bitmap.Save(ms, ImageFormat.Png);
                byte[] imgBytes    = ms.ToArray();
                string base64Image = Convert.ToBase64String(imgBytes);

                pi.Bitmap       = base64Image; // serialize image to string..
                message.payload = pi;
                websocket.Send(JsonUtils.serialize(message));
            }
        }
Ejemplo n.º 6
0
        private void print_print(object sender, PrintPageEventArgs pe)
        {
            int print_Y = 3; //打印当前行的Y坐标
            int print_X = 8; //打印当前行的Y坐标

            if (Width <= 0)
            {
                Width = PrinterDocument.DefaultPageSettings.PaperSize.Width -
                        PrinterDocument.DefaultPageSettings.Margins.Left -
                        PrinterDocument.DefaultPageSettings.Margins.Right;
            }
            if (PrintImage != null)
            {
                if (pe.PageBounds.Width < PrintImage.Width)
                {
                    //Rectangle rect = new Rectangle(0, 0, 100, 100);
                    //bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
                    PrintImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
                    pe.Graphics.DrawImage(PrintImage, 2, 2);
                }
                else
                {
                    pe.Graphics.DrawImage(PrintImage, 1, 1);
                }
            }
            foreach (var pp in PrinterItems)
            {
                SizeF sf = pe.Graphics.MeasureString(pp.value, pp.font);
                if (pp.textalgin == "left")
                {
                    pe.Graphics.DrawString(pp.value, pp.font, pp.brush, new Point(print_X, print_Y));//左对齐
                }
                else if (pp.textalgin == "center")
                {
                    int w = (int)sf.Width;
                    pe.Graphics.DrawString(pp.value, pp.font, pp.brush, new Point((Width - w) / 2, print_Y));//左对齐
                }
                else
                {
                    int w = (int)sf.Width;
                    pe.Graphics.DrawString(pp.value, pp.font, pp.brush, new Point(Width - w, print_Y)); //右对齐
                }
                print_Y += (int)sf.Height + 3;                                                          //移至下一行
            }
        }
Ejemplo n.º 7
0
 public void PrintImageFromURL(HttpListenerContext context)
 {
     try
     {
         PrintImage message = ParseRequest <PrintImage>(context);
         if (message.Url != null)
         {
             GetServer.CloverConnector.PrintImageFromURL(message.Url);
             this.SendTextResponse(context, "");
         }
     }
     catch (Exception e)
     {
         context.Response.StatusCode        = 400;
         context.Response.StatusDescription = e.Message;
         this.SendTextResponse(context, "error processing request");
     }
 }
Ejemplo n.º 8
0
        private void DoPrint(object arg)
        {
            try
            {
                Status = PrintJobStatus.Printing;
                OnStatusUpdate("Printing Started");

                //PrintThreadParameter printThreadParametr = (PrintThreadParameter)arg;
                IList <FilmBox> filmBoxList = (IList <FilmBox>)arg;

                var printJobDir = new System.IO.DirectoryInfo(FullPrintJobFolder);
                if (!printJobDir.Exists)
                {
                    printJobDir.Create();
                }

                DicomFile     file;
                List <string> autoIDList = new List <string>();
                for (int i = 0; i < filmBoxList.Count; i++)
                {
                    DicomUID autoID  = DicomUID.Generate();
                    var      filmBox = filmBoxList[i];
                    //One Film Box, One Folder
                    //var filmBoxDir = printJobDir.CreateSubdirectory(string.Format("F{0:000000}", i + 1 ));
                    var filmBoxDir = printJobDir.CreateSubdirectory(autoID.UID);

                    //Film Session Relative DICOM Tag
                    file = new DicomFile(filmBox.FilmSession);
                    file.Save(string.Format(@"{0}\FilmSession.dcm", filmBoxDir.FullName));

                    FilmBoxFolderList.Add(filmBoxDir.FullName);
                    List <string> ImageList = filmBox.SaveImage(filmBoxDir.FullName);


                    #region  PrintTask Content
                    PrintTask printTask = new PrintTask();
                    printTask.FilmUID          = autoID.UID;
                    printTask.CallingIPAddress = CallingIPAddress;
                    printTask.CallingAE        = CallingAETitle;
                    printTask.CalledAE         = CalledAETitle;

                    #region  Get Film Session Level DICOM Tag, Save in PrintTag Structure
                    printTask.NumberOfCopies = filmBox.FilmSession.NumberOfCopies;
                    printTask.MediumType     = filmBox.FilmSession.MediumType;
                    #endregion


                    #region  Get Film Box Level DICOM Tag, Save in PrintTag Structure
                    printTask.printUID           = SOPInstanceUID.UID;
                    printTask.BorderDensity      = filmBox.BorderDensity;
                    printTask.ImageDisplayFormat = filmBox.ImageDisplayFormat;
                    printTask.EmptyImageDensity  = filmBox.EmptyImageDensity;
                    printTask.FilmSizeID         = filmBox.FilmSizeID;
                    printTask.FilmOrienation     = filmBox.FilmOrienation;
                    printTask.MagnificationType  = filmBox.MagnificationType;
                    printTask.MaxDensity         = filmBox.MaxDensity;
                    printTask.MinDensity         = filmBox.MinDensity;
                    printTask.SmoothingType      = filmBox.SmoothingType;
                    printTask.Trim            = filmBox.Trim;
                    printTask.PresentationLut = filmBox.PresentationLut == null ? string.Empty : filmBox.PresentationLut.ToString();
                    #endregion

                    #endregion
                    int imageCount = ImageList.Count;
                    for (int imageIndex = 0; imageIndex < imageCount; imageIndex++)
                    {
                        #region PrintImage Content
                        PrintImage printImage = new PrintImage();
                        printImage.FilmUID          = autoID.UID;
                        printImage.ImageBoxPosition = imageIndex;
                        string imagePath = string.Format(@"{0}\I{1:000000}", filmBoxDir.FullName, imageIndex + 1);
                        printImage.DicomFilePath = imagePath + ".dcm";
                        //Save into Table T_PrintTag
                        if (printImage.SaveToDB() == false)
                        {
                            Log.Error("Print Job {0} FAIL: {1}", SOPInstanceUID.UID.Split('.').Last(), "Save PrintImage to DB Failed");
                        }
                        #endregion
                    }

                    int index = 0;
                    foreach (var item in filmBox.BasicImageBoxes)
                    {
                        if (item != null && item.ImageSequence != null && item.ImageSequence.Contains(DicomTag.PixelData))
                        {
                            try
                            {
                                var image = new DicomImage(item.ImageSequence);
                                image.RenderImage().AsBitmap().Save(ImageList[index]);
                                index++;
                            }
                            finally
                            {
                            }
                        }
                    }

                    //Parse DICOM File and render into Memory As image
                    var combineJpgFile = string.Format(@"{0}\{1}" + ".jpg", FilmBoxFolderList[i], autoID.UID);
                    int row = 0, column = 0;
                    GetDisplayFormat(printTask.ImageDisplayFormat, ref row, ref column);
                    CombineImages(ImageList, combineJpgFile, row, column);

                    printTask.JpgFilmPath = combineJpgFile;
                    //Save into Table T_PrintTag
                    if (printTask.SaveToDB() == false)
                    {
                        Log.Error("Print Job {0} FAIL: {1}", SOPInstanceUID.UID.Split('.').Last(), "Save printTask to DB Failed");
                    }

                    autoIDList.Add(autoID.UID);
                }

                Status = PrintJobStatus.Done;
                OnStatusUpdate("Printing Done");

                foreach (var autoIDItem in autoIDList)
                {
                    ClientStart(autoIDItem, this.CallingIPAddress, this.CallingAETitle);
                }
            }
            catch (Exception ex)
            {
                Status = PrintJobStatus.Failure;
                OnStatusUpdate("Printing failed");
                Log.Error("Print Job {0} FAIL: {1}", SOPInstanceUID.UID.Split('.').Last(), ex.Message);
            }
            finally
            {
            }
        }