StudyService.cs 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using DinkToPdf;
  2. using DinkToPdf.Contracts;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using TEAMModelOS.SDK.DI;
  11. namespace TEAMModelOS.SDK.Models.Service
  12. {
  13. public static class StudyService
  14. {
  15. public static async Task<string> GenPdf(string tId,string areaId, string cname,string sname,string gname,string details, IConverter _converter, AzureStorageFactory _azureStorage,DingDing _dingDing)
  16. {
  17. //https://article.itxueyuan.com/JAxOnG
  18. //http://t.zoukankan.com/hsiang-p-14608694.html
  19. //https://github.com/rdvojmoc/DinkToPdf
  20. //https://blog.csdn.net/u011966339/article/details/114964016?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-114964016-blog-118609642.pc_relevant_antiscanv2&spm=1001.2101.3001.4242.1&utm_relevant_index=3
  21. try
  22. {
  23. var html = Constant.html.Replace("{c.cname}", cname).Replace("{c.sname}", sname).Replace("{c.gname}", gname).Replace("{c.details}", details);
  24. List<Task<string>> tasks = new List<Task<string>>();
  25. GlobalSettings globalSettings = new GlobalSettings();
  26. globalSettings.ColorMode = ColorMode.Color;
  27. globalSettings.Orientation = Orientation.Portrait;
  28. globalSettings.PaperSize = PaperKind.A4;
  29. globalSettings.Margins = new MarginSettings { Top = 25, Bottom = 25 };
  30. //globalSettings.Out = @"E:\pdf\test.pdf";
  31. ObjectSettings objectSettings = new ObjectSettings();
  32. objectSettings.PagesCount = true;
  33. objectSettings.HtmlContent = html;
  34. WebSettings webSettings = new WebSettings();
  35. webSettings.DefaultEncoding = "utf-8";
  36. HeaderSettings headerSettings = new HeaderSettings();
  37. headerSettings.FontSize = 15;
  38. headerSettings.FontName = "fangsong";
  39. headerSettings.Right = "";
  40. // headerSettings.Line = true;
  41. FooterSettings footerSettings = new FooterSettings();
  42. footerSettings.FontSize = 12;
  43. footerSettings.FontName = "Ariel";
  44. footerSettings.Center = "校本研修活动完成情况([page]/[toPage])页";
  45. // footerSettings.Line = true;
  46. objectSettings.HeaderSettings = headerSettings;
  47. objectSettings.FooterSettings = footerSettings;
  48. objectSettings.WebSettings = webSettings;
  49. HtmlToPdfDocument htmlToPdfDocument = new HtmlToPdfDocument()
  50. {
  51. GlobalSettings = globalSettings,
  52. Objects = { objectSettings },
  53. };
  54. var a = _converter.Convert(htmlToPdfDocument);
  55. MemoryStream m = new(a);
  56. await _azureStorage.GetBlobContainerClient("teammodelos").UploadFileByContainer(m, $"{areaId}", $"{tId}/offline-report.pdf", true);
  57. string url = $"{areaId}/{tId}/offline-report.pdf";
  58. return url;
  59. /* FileStream fs = new FileStream("F:\\1111111111111\\SimplePdf1.pdf", FileMode.Create, FileAccess.Write, FileShare.Read);
  60. m.WriteTo(fs);
  61. m.Close();
  62. fs.Close();*/
  63. //var doc = new HtmlToPdfDocument()
  64. //{
  65. // GlobalSettings = {
  66. // ColorMode = ColorMode.Color,
  67. // Orientation = Orientation.Portrait,
  68. // PaperSize = PaperKind.A4,
  69. // Margins = new MarginSettings() { Top = 10 },
  70. // Out = @"F:\test.pdf",
  71. // },
  72. // Objects = {
  73. // new ObjectSettings()
  74. // {
  75. // Page = "https://zhidao.baidu.com/question/175696719173618004.html",
  76. // },
  77. // }
  78. //};
  79. //_converter.Convert(doc);
  80. // return Ok(File(a, "application/octet-stream", "SimplePdf.pdf"));
  81. }
  82. catch (Exception ex)
  83. {
  84. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StudyService,GenPdf()\n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
  85. return null ;
  86. }
  87. }
  88. }
  89. }