LocalSettleBillPrintProcess.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Forms;
  3. using PTMedicalInsurance.Helper;
  4. using Spire.Pdf;
  5. using Spire.Pdf.Print;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Drawing;
  9. using System.Drawing.Printing;
  10. using System.IO;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Forms;
  15. namespace PTMedicalInsurance.Business
  16. {
  17. class LocalSettleBillPrintProcess : AbstractProcess
  18. {
  19. public override CallResult Process(JObject joInParam)
  20. {
  21. string errMsg = "";
  22. string insuAdmObj = JsonHelper.getDestValue(joInParam, "insuAdmObj");
  23. JObject joInsuAdmObj = JObject.Parse(insuAdmObj);
  24. JObject joRtn = invoker.invokeCenterService(TradeEnum.PrintSettlementList, joInsuAdmObj);
  25. if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0)
  26. {
  27. return Exception("读卡失败:", errMsg);
  28. }
  29. else
  30. {
  31. // 仅有一个report映射到output节点
  32. string reportData = JsonHelper.getDestValue(joRtn, "output");
  33. if (!string.IsNullOrEmpty(reportData))
  34. {
  35. PrintBase64Pdf(reportData);
  36. }
  37. return IrisReturn("打印成功",joRtn);
  38. }
  39. }
  40. public void PrintBase64Pdf(string base64Pdf)
  41. {
  42. string pdfFile = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\bill.pdf";
  43. byte[] bytes = Convert.FromBase64String(base64Pdf);
  44. try
  45. {
  46. using (PdfDocument doc = new PdfDocument())
  47. {
  48. File.WriteAllBytes(pdfFile, bytes);
  49. doc.LoadFromFile(pdfFile);
  50. PrintersForm printers = new PrintersForm();
  51. if (printers.ShowDialog() == DialogResult.OK)
  52. {
  53. PdfPrintSettings settings = new PdfPrintSettings();
  54. settings.PrinterName = printers.PrinterName;
  55. settings.Landscape = printers.Landscape;
  56. doc.Print(settings);
  57. }
  58. }
  59. }
  60. finally
  61. {
  62. if (File.Exists(pdfFile))
  63. {
  64. File.Delete(pdfFile);
  65. }
  66. }
  67. }
  68. }
  69. }