StudyService.cs 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 cname,string sname,string gname,string details, IConverter _converter)
  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 MemoryStream(a);
  55. string aa = "";
  56. return aa;
  57. /* FileStream fs = new FileStream("F:\\1111111111111\\SimplePdf1.pdf", FileMode.Create, FileAccess.Write, FileShare.Read);
  58. m.WriteTo(fs);
  59. m.Close();
  60. fs.Close();*/
  61. //var doc = new HtmlToPdfDocument()
  62. //{
  63. // GlobalSettings = {
  64. // ColorMode = ColorMode.Color,
  65. // Orientation = Orientation.Portrait,
  66. // PaperSize = PaperKind.A4,
  67. // Margins = new MarginSettings() { Top = 10 },
  68. // Out = @"F:\test.pdf",
  69. // },
  70. // Objects = {
  71. // new ObjectSettings()
  72. // {
  73. // Page = "https://zhidao.baidu.com/question/175696719173618004.html",
  74. // },
  75. // }
  76. //};
  77. //_converter.Convert(doc);
  78. // return Ok(File(a, "application/octet-stream", "SimplePdf.pdf"));
  79. }
  80. catch (Exception ex)
  81. {
  82. return "";
  83. }
  84. }
  85. }
  86. }