StudyService.cs 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. GlobalSettings globalSettings = new GlobalSettings();
  25. globalSettings.ColorMode = ColorMode.Color;
  26. globalSettings.Orientation = Orientation.Portrait;
  27. globalSettings.PaperSize = PaperKind.A4;
  28. globalSettings.Margins = new MarginSettings { Top = 25, Bottom = 25 };
  29. //globalSettings.Out = @"E:\pdf\test.pdf";
  30. ObjectSettings objectSettings = new ObjectSettings();
  31. objectSettings.PagesCount = true;
  32. objectSettings.HtmlContent = html;
  33. WebSettings webSettings = new WebSettings();
  34. webSettings.DefaultEncoding = "utf-8";
  35. HeaderSettings headerSettings = new HeaderSettings();
  36. headerSettings.FontSize = 15;
  37. headerSettings.FontName = "fangsong";
  38. headerSettings.Right = "";
  39. // headerSettings.Line = true;
  40. FooterSettings footerSettings = new FooterSettings();
  41. footerSettings.FontSize = 12;
  42. footerSettings.FontName = "Ariel";
  43. footerSettings.Center = "校本研修活动完成情况([page]/[toPage])页";
  44. // footerSettings.Line = true;
  45. objectSettings.HeaderSettings = headerSettings;
  46. objectSettings.FooterSettings = footerSettings;
  47. objectSettings.WebSettings = webSettings;
  48. HtmlToPdfDocument htmlToPdfDocument = new HtmlToPdfDocument()
  49. {
  50. GlobalSettings = globalSettings,
  51. Objects = { objectSettings },
  52. };
  53. var a = _converter.Convert(htmlToPdfDocument);
  54. MemoryStream m = new(a);
  55. await _azureStorage.GetBlobContainerClient("teammodelos").UploadFileByContainer(m, $"{areaId}", $"{tId}/offline-report.pdf", true);
  56. string url = $"{areaId}/{tId}/offline-report.pdf";
  57. return url;
  58. /* FileStream fs = new FileStream("F:\\1111111111111\\SimplePdf1.pdf", FileMode.Create, FileAccess.Write, FileShare.Read);
  59. m.WriteTo(fs);
  60. m.Close();
  61. fs.Close();*/
  62. //var doc = new HtmlToPdfDocument()
  63. //{
  64. // GlobalSettings = {
  65. // ColorMode = ColorMode.Color,
  66. // Orientation = Orientation.Portrait,
  67. // PaperSize = PaperKind.A4,
  68. // Margins = new MarginSettings() { Top = 10 },
  69. // Out = @"F:\test.pdf",
  70. // },
  71. // Objects = {
  72. // new ObjectSettings()
  73. // {
  74. // Page = "https://zhidao.baidu.com/question/175696719173618004.html",
  75. // },
  76. // }
  77. //};
  78. //_converter.Convert(doc);
  79. // return Ok(File(a, "application/octet-stream", "SimplePdf.pdf"));
  80. }
  81. catch (Exception ex)
  82. {
  83. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-StudyService,GenPdf()\n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
  84. return null ;
  85. }
  86. }
  87. }
  88. }