Beispiel #1
0
        /// <summary>
        /// 客户端发送send请求会被触发,接收请求数据
        /// </summary>
        protected override void OnMessage(MessageEventArgs e)
        {
            String result = "打印成功!";

            try
            {
                MessageEvent <String> data = JsonHelper.DeserializeJsonToObject <MessageEvent <String> >(e.Data);
                string eventType           = Convert.ToString(data.eventType).ToUpper();
                string printType           = Convert.ToString(data.printType).ToUpper();
                string direction           = Convert.ToString(data.direction);
                string printerName         = Convert.ToString(data.printerName);
                string paperName           = Convert.ToString(data.paperName);
                string folderName          = Guid.NewGuid().ToString();                                //pdf转图片所存放的文件夹名称
                string tempDir             = Path.Combine(Directory.GetCurrentDirectory(), "tempImg"); //生成图片临时存放文件夹
                string tempImageDir        = Path.Combine(tempDir, folderName);
                //string targetPath = Path.Combine(tempDir, fileName + ".jpg");
                int         width          = data.width;
                int         height         = data.height;
                Boolean     customSizeFlag = data.customSizeFlag;
                WebRequest  webreq         = null;
                WebResponse webres         = null;
                Boolean     isUrl          = HttpUtils.IsUrl(Convert.ToString(data.data));
                string      fileType       = Convert.ToString(data.fileType).ToUpper();
                #region
                if (File.Exists(Convert.ToString(data.data)))   //fileType由于IMCIS没有对应变量,data是路径文件名时取值为其后缀,否则当printType时“BASE64”也是JPG,否则就是HTML打印
                {
                    fileType = Path.GetExtension(Convert.ToString(data.data)).Substring(1).ToUpper();
                }
                else if (isUrl) //网络文件,通过ContentType获取
                {
                    webreq = WebRequest.Create(Convert.ToString(data.data));
                    webres = webreq.GetResponse();
                    string[] contentType = Convert.ToString(webres.ContentType).Split('/');
                    fileType = contentType.Length > 1 ? contentType[1].ToUpper() : fileType;
                }
                else
                {
                    fileType = printType == "BASE64" ? "JPG" : "HTML";
                }
                #endregion
                switch (fileType)
                {
                case "JPG":
                case "JPEG":
                case "PNG":
                case "RAW":
                case "BMP":
                    if (isUrl)
                    {
                        using (Stream stream = webres.GetResponseStream())
                        {
                            using (Image image = Image.FromStream(stream))
                            {
                                result = PrintUtils.PrintImage(image, eventType, direction, printerName, paperName);
                            }
                        }
                    }
                    else
                    {
                        result = printType == "FILEPATH" ?
                                 PrintUtils.PreView(Convert.ToString(data.data), eventType, direction, printerName, paperName)
                               : PrintUtils.PrintImage(Convert.ToString(data.data), eventType, printType, direction, printerName, paperName);
                    }
                    break;

                case "TXT":
                    PrintUtils.PrintTxt(Convert.ToString(data.data), printType);
                    break;

                case "PDF":
                    string fileName = Path.GetFileNameWithoutExtension(data.data);      //通过完整路径取得pdf文件名称作为jpg的文件名
                    if (isUrl)
                    {
                        using (Stream stream = webres.GetResponseStream())
                        {
                            MemoryStream ms = HttpUtils.StreamToMemoryStream(stream);
                            Pdf2JpgUtils.Pdf2Jpg(ms, Path.Combine(tempDir, fileName + ".jpg"), null, folderName);
                        }
                    }
                    else
                    {
                        Pdf2JpgUtils.Pdf2Jpg(Convert.ToString(data.data), Path.Combine(tempDir, fileName + ".jpg"), null, folderName);
                    }

                    if (eventType == "PRINT")
                    {
                        var files = Directory.GetFiles(tempImageDir).OrderBy(f => Convert.ToInt32(Path.GetFileNameWithoutExtension(f)));
                        foreach (var file in files)
                        {
                            result = PrintUtils.PrintImage(file, eventType, printType, direction, printerName, paperName);
                        }
                        try
                        {
                            //删除文件夹
                            Directory.Delete(tempImageDir, true);
                        }
                        catch (Exception ex)
                        {
                            result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempImageDir, ex);
                        }
                    }
                    else if (eventType == "PREVIEW")
                    {
                        result = PrintUtils.PreView(tempImageDir, eventType, direction, printerName, paperName);
                    }
                    break;

                case "HTML":
                    string tempPdf    = Path.Combine(Directory.GetCurrentDirectory(), "tempPdf");
                    string tempPdfDir = Path.Combine(tempPdf, folderName);
                    Directory.CreateDirectory(tempPdfDir);
                    string tempPdfPath = Path.Combine(tempPdfDir, "Html2Pdf.pdf");
                    Html2PdfUtils.Html2Pdf(Convert.ToString(data.data).Trim(), tempPdfPath, paperName, direction);
                    Pdf2JpgUtils.Pdf2Jpg(tempPdfPath, Path.Combine(tempDir, "Html2Pdf.jpg"), null, folderName);
                    if (eventType == "PRINT")
                    {
                        var files = Directory.GetFiles(tempImageDir).OrderBy(f => Convert.ToInt32(Path.GetFileNameWithoutExtension(f)));
                        foreach (var file in files)
                        {
                            result = PrintUtils.PrintImage(file, eventType, printType, direction, printerName, paperName);
                        }
                        try
                        {
                            //删除临时文件夹
                            Directory.Delete(tempImageDir, true);
                            Directory.Delete(tempPdfDir, true);
                        }
                        catch (Exception ex)
                        {
                            result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempPdfDir, ex);
                        }
                    }
                    else if (eventType == "PREVIEW")
                    {
                        result = PrintUtils.PreView(tempImageDir, eventType, direction, printerName, paperName);
                    }
                    break;

                    #region pdf不转图片直接打印

                    /*
                     * case "PDF":
                     *  string fileName = Path.GetFileNameWithoutExtension(data.data);  //通过完整路径取得pdf文件名称作为jpg的文件名
                     *  if (eventType == "PRINT")
                     *  {
                     *      result = PrintUtils.PrintPdf(Convert.ToString(data.data), eventType, direction, printerName, paperName);
                     *  }
                     *  else if (eventType == "PREVIEW")
                     *  {
                     *      result = PrintUtils.PreViewPdf(Convert.ToString(data.data), eventType, direction, printerName, paperName);
                     *  }
                     *  break;
                     * case "HTML":
                     *  string tempPdf = Path.Combine(Directory.GetCurrentDirectory(), "tempPdf");
                     *  string tempPdfDir = Path.Combine(tempPdf, folderName);
                     *  Directory.CreateDirectory(tempPdfDir);
                     *  string tempPdfPath = Path.Combine(tempPdfDir, "Html2Pdf.pdf");
                     *  Html2PdfUtils.Html2Pdf(Convert.ToString(data.data).Trim(), tempPdfPath, paperName, direction);
                     *  if (eventType == "PRINT")
                     *  {
                     *      result = PrintUtils.PrintPdf(tempPdfPath, eventType, direction, printerName, paperName);
                     *  }
                     *  else if (eventType == "PREVIEW")
                     *  {
                     *      result = PrintUtils.PreViewPdf(tempPdfPath, eventType, direction, printerName, paperName);
                     *  }
                     *  try
                     *  {
                     *      //删除临时文件夹
                     *      Directory.Delete(tempPdfDir, true);
                     *  }
                     *  catch (Exception ex)
                     *  {
                     *      result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempPdfDir, ex);
                     *  }
                     *  break;
                     * */
                    #endregion
                default:
                    result = "参数异常:fileType字段只能为jpg、pdf、html、getPrinterName、getPageSizes";
                    break;
                }
            }
            catch (Exception ex)
            {
                result = "打印出错【" + ex.Message + "】";
            }
            Send(result);
        }
        public string Print(string data)
        {
            String result = "打印成功!";

            try
            {
                PrinterData printerData  = JsonHelper.DeserializeJsonToObject <PrinterData>(data);
                string      eventType    = (printerData.eventType).ToUpper();
                string      printType    = (printerData.printType).ToUpper();
                string      folderName   = Guid.NewGuid().ToString();                    //pdf转图片所存放的文件夹名称
                string      tempDir      = Path.Combine(dfp.dynamicFilePath, "tempImg"); //生成图片临时存放文件夹
                string      tempImageDir = Path.Combine(tempDir, folderName);
                //string targetPath = Path.Combine(tempDir, fileName + ".jpg");
                int         width          = printerData.width;
                int         height         = printerData.height;
                Boolean     customSizeFlag = printerData.customSizeFlag;
                WebRequest  webreq         = null;
                WebResponse webres         = null;
                Boolean     isUrl          = HttpUtils.IsUrl(Convert.ToString(printerData.data));
                string      fileType       = printerData.fileType.ToUpper();
                #region
                if (File.Exists(Convert.ToString(printerData.data)))   //fileType由于IMCIS没有对应变量,data是路径文件名时取值为其后缀,否则当printType时“BASE64”也是JPG,否则就是HTML打印
                {
                    fileType = Path.GetExtension(Convert.ToString(printerData.data)).Substring(1).ToUpper();
                }
                else if (isUrl) //网络文件,通过ContentType获取
                {
                    webreq = WebRequest.Create(Convert.ToString(printerData.data));
                    webres = webreq.GetResponse();
                    string[] contentType = Convert.ToString(webres.ContentType).Split('/');
                    fileType = contentType.Length > 1 ? contentType[1].ToUpper() : fileType;
                }
                else if (fileType != "PRINTERNAMES" && fileType != "PAGESIZES")
                {
                    fileType = printType == "BASE64" ? "JPG" : "HTML";
                }
                #endregion
                switch (fileType)
                {
                case "JPG":
                case "JPEG":
                case "PNG":
                case "RAW":
                case "BMP":
                    if (isUrl)
                    {
                        using (Stream stream = webres.GetResponseStream())
                        {
                            using (Image image = Image.FromStream(stream))
                            {
                                printerData.image = image;
                                result            = PrintUtils.PrintImage(printerData);
                            }
                        }
                    }
                    else
                    {
                        if (printType == "FILEPATH")
                        {
                            printerData.filePath = printerData.data;
                        }
                        else if (printType == "BASE64")
                        {
                            printerData.imgBase64 = printerData.data;
                        }
                        result = PrintUtils.PrintImage(printerData);
                    }
                    break;

                case "TXT":
                    PrintUtils.PrintTxt(printerData);
                    break;

                    #region pdf转图片打印

                    /*
                     * case "PDF":
                     * string fileName = Path.GetFileNameWithoutExtension(printerData.data);  //通过完整路径取得pdf文件名称作为jpg的文件名
                     * if (isUrl)
                     * {
                     *  using (Stream stream = webres.GetResponseStream())
                     *  {
                     *      MemoryStream ms = HttpUtils.StreamToMemoryStream(stream);
                     *      Pdf2JpgUtils.Pdf2Jpg(ms, Path.Combine(tempDir, fileName + ".jpg"), null, folderName);
                     *  }
                     * }
                     * else
                     * {
                     *  Pdf2JpgUtils.Pdf2Jpg(Convert.ToString(printerData.data), Path.Combine(tempDir, fileName + ".jpg"), null, folderName);
                     * }
                     *
                     * if (eventType == "PRINT")
                     * {
                     *  var files = Directory.GetFiles(tempImageDir).OrderBy(f => Convert.ToInt32(Path.GetFileNameWithoutExtension(f)));
                     *  foreach (var file in files)
                     *  {
                     *      printerData.filePath = file;
                     *      result = PrintUtils.PrintImage(printerData);
                     *  }
                     *  try
                     *  {
                     *      //删除文件夹
                     *      Directory.Delete(tempImageDir, true);
                     *  }
                     *  catch (Exception ex)
                     *  {
                     *      result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempImageDir, ex);
                     *  }
                     * }
                     * else if (eventType == "PREVIEW")
                     * {
                     *  printerData.filePath = tempImageDir;
                     *  result = PrintUtils.PreView(printerData);
                     * }
                     * break;
                     * case "HTML":
                     * string tempPdf = Path.Combine(dfp.dynamicFilePath, "tempPdf");
                     * string tempPdfDir = Path.Combine(tempPdf, folderName);
                     * Directory.CreateDirectory(tempPdfDir);
                     * string tempPdfPath = Path.Combine(tempPdfDir, "Html2Pdf.pdf");
                     * Html2PdfUtils.Html2Pdf(Convert.ToString(printerData.data).Trim(), tempPdfPath, printerData.paperName, printerData.direction, customSizeFlag, width, height);
                     * Pdf2JpgUtils.Pdf2Jpg(tempPdfPath, Path.Combine(tempDir, "Html2Pdf.jpg"), null, folderName);
                     * if (eventType == "PRINT")
                     * {
                     *  var files = Directory.GetFiles(tempImageDir).OrderBy(f => Convert.ToInt32(Path.GetFileNameWithoutExtension(f)));
                     *  foreach (var file in files)
                     *  {
                     *      printerData.filePath = file;
                     *      result = PrintUtils.PrintImage(printerData);
                     *  }
                     *  try
                     *  {
                     *      //删除临时文件夹
                     *      Directory.Delete(tempImageDir, true);
                     *      Directory.Delete(tempPdfDir, true);
                     *  }
                     *  catch (Exception ex)
                     *  {
                     *      result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempPdfDir, ex);
                     *  }
                     * }
                     * else if (eventType == "PREVIEW")
                     * {
                     *  printerData.filePath = tempImageDir;
                     *  result = PrintUtils.PreView(printerData);
                     * }
                     * break;
                     */
                    #endregion
                    #region pdf不转图片直接打印
                /* * */
                case "PDF":
                    if (isUrl)
                    {
                        using (Stream stream = webres.GetResponseStream())
                        {
                            MemoryStream ms = HttpUtils.StreamToMemoryStream(stream);
                            result = eventType == "PRINT" ? PrintUtils.PrintPdf(ms, printerData) :
                                     PrintUtils.PreViewPdf(ms, printerData);
                        }
                    }
                    else
                    {
                        printerData.filePath = printerData.data;
                        result = eventType == "PRINT" ? PrintUtils.PrintPdf(printerData) :
                                 PrintUtils.PreViewPdf(printerData);
                    }
                    break;

                case "HTML":
                    using (Stream pdfStream = Html2PdfUtils.Html2Pdf(printerData))
                    {
                        result = eventType == "PRINT" ? PrintUtils.PrintPdf(pdfStream, printerData) :
                                 PrintUtils.PreViewPdf(pdfStream, printerData);
                    }
                    break;

                    #endregion
                case "PRINTERNAMES":
                    result = PrintUtils.GetPrinterNames();
                    break;

                case "PAGESIZES":
                    result = PrintUtils.GetPageSizesByName(Convert.ToString(printerData.data));
                    break;

                default:
                    result = "参数异常:fileType字段只能为jpg、pdf、html、getPrinterName、getPageSizes";
                    break;
                }
            }
            catch (Exception ex)
            {
                result = "打印出错【" + ex.Message + "】";
            }
            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 客户端发送send请求会被触发,接收请求数据
        /// </summary>
        protected override void OnMessage(MessageEventArgs e)
        {
            String result = "打印成功!";

            try
            {
                MessageEvent <String> data = JsonHelper.DeserializeJsonToObject <MessageEvent <String> >(e.Data);
                string eventType           = Convert.ToString(data.eventType).ToUpper();
                string printType           = Convert.ToString(data.printType).ToUpper();
                string direction           = Convert.ToString(data.direction);
                string printerName         = Convert.ToString(data.printerName);
                string paperName           = Convert.ToString(data.paperName);
                string folderName          = Guid.NewGuid().ToString();                                //pdf转图片所存放的文件夹名称
                string tempDir             = Path.Combine(Directory.GetCurrentDirectory(), "tempImg"); //生成图片临时存放文件夹
                string tempImageDir        = Path.Combine(tempDir, folderName);
                //string targetPath = Path.Combine(tempDir, fileName + ".jpg");

                switch (Convert.ToString(data.fileType).ToUpper())
                {
                case "JPG":
                    if (eventType == "PRINT")
                    {
                        result = PrintUtils.PrintImage(Convert.ToString(data.data), printType, direction, printerName, paperName);
                    }
                    else if (eventType == "PREVIEW")
                    {
                        result = printType == "FILEPATH" ?
                                 PrintUtils.PreView(Convert.ToString(data.data), eventType, direction, printerName, paperName)
                                : PrintUtils.PreViewByBase64(Convert.ToString(data.data), eventType, direction, printerName, paperName);
                    }
                    break;

                case "TXT":
                    PrintUtils.PrintTxt(Convert.ToString(data.data), printType);
                    break;

                case "PDF":
                    string fileName = Path.GetFileNameWithoutExtension(data.data);      //通过完整路径取得pdf文件名称作为jpg的文件名
                    Pdf2JpgUtils.Pdf2Jpg(Convert.ToString(data.data), Path.Combine(tempDir, fileName + ".jpg"), null, folderName);
                    if (eventType == "PRINT")
                    {
                        foreach (var file in Directory.GetFiles(tempImageDir))
                        {
                            result = PrintUtils.PrintImage(file, printType, direction, printerName, paperName);
                        }
                        try
                        {
                            //删除文件夹
                            Directory.Delete(tempImageDir, true);
                        }
                        catch (Exception ex)
                        {
                            result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempImageDir, ex);
                        }
                    }
                    else if (eventType == "PREVIEW")
                    {
                        result = PrintUtils.PreView(tempImageDir, eventType, direction, printerName, paperName);
                    }
                    break;

                case "HTML":
                    string tempPdf    = Path.Combine(Directory.GetCurrentDirectory(), "tempPdf");
                    string tempPdfDir = Path.Combine(tempPdf, folderName);
                    Directory.CreateDirectory(tempPdfDir);
                    string tempPdfPath = Path.Combine(tempPdfDir, "Html2Pdf.pdf");
                    Html2PdfUtils.Html2Pdf(Convert.ToString(data.data).Trim(), tempPdfPath, paperName, direction);
                    Pdf2JpgUtils.Pdf2Jpg(tempPdfPath, Path.Combine(tempDir, "Html2Pdf.jpg"), null, folderName);
                    if (eventType == "PRINT")
                    {
                        foreach (var file in Directory.GetFiles(tempImageDir))
                        {
                            result = PrintUtils.PrintImage(file, printType, direction, printerName, paperName);
                        }
                        try
                        {
                            //删除临时文件夹
                            Directory.Delete(tempImageDir, true);
                            Directory.Delete(tempPdfDir, true);
                        }
                        catch (Exception ex)
                        {
                            result = string.Format("删除临时目录出错:{0};其他错误信息:{1}", tempPdfDir, ex);
                        }
                    }
                    else if (eventType == "PREVIEW")
                    {
                        result = PrintUtils.PreView(tempImageDir, eventType, direction, printerName, paperName);
                    }
                    break;

                case "GETPRINTERNAME":
                    result = PrintUtils.GetPrinterNames();
                    break;

                case "GETPAGESIZES":
                    result = PrintUtils.GetPageSizesByName(Convert.ToString(data.data));
                    break;

                default:
                    result = "参数异常:fileType字段只能为jpg、pdf、html、getPrinterName、getPageSizes";
                    break;
                }
            }
            catch (Exception ex)
            {
                result = "打印出错【" + ex.Message + "】";
            }
            Send(result);
        }