HtexController.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using HTEXLib;
  2. using HTEXLib.Builders;
  3. using HTEXLib.DOCX.Models;
  4. using HTEXLib.Helpers.ShapeHelpers;
  5. using HTEXLib.Translator;
  6. using Microsoft.AspNetCore.Hosting;
  7. using Microsoft.AspNetCore.Http;
  8. using Microsoft.AspNetCore.Mvc;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Drawing.Imaging;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Text.Json;
  16. using System.Threading.Tasks;
  17. namespace HTEXWeb.Controllers
  18. {
  19. [ApiController]
  20. [Route("htex")]
  21. public class HtexController: ControllerBase
  22. {
  23. public PPTX2HTEXTranslator htexGenerator { get; set; }
  24. public DOXC2HTMLTranslator _DOXC2HTMLTranslator { get; set; }
  25. public HTML2ITEMTranslator _HTML2ITEMTranslator { get; set; }
  26. // public HTML2IMGSTranslator _HTML2IMGSTranslator { get; set; }
  27. public HTML2ITEMV3Translator _HTML2ITEMV3Translator { get; set; }
  28. public HtexController(PPTX2HTEXTranslator htexGenerator, DOXC2HTMLTranslator DOXC2HTMLTranslator, // HTML2IMGSTranslator HTML2IMGSTranslator,
  29. HTML2ITEMV3Translator HTML2ITEMV3Translator) {
  30. _DOXC2HTMLTranslator = DOXC2HTMLTranslator;
  31. // _HTML2IMGSTranslator = HTML2IMGSTranslator;
  32. _HTML2ITEMV3Translator = HTML2ITEMV3Translator;
  33. this.htexGenerator = htexGenerator;
  34. }
  35. [HttpPost("generator")]
  36. public object Generator([FromForm] IFormFile file)
  37. {
  38. return JsonSerializer.Deserialize<JsonElement>(JsonHelper.ToJson(htexGenerator.Translate(file.OpenReadStream()),ignoreNullValue:false));
  39. }
  40. /// <summary>
  41. /// docUrl
  42. /// folder
  43. /// shaCode
  44. ///
  45. /// UploadWord
  46. /// </summary>
  47. /// <param name="request"></param>
  48. /// <returns></returns>
  49. [HttpPost("upload-word")]
  50. [RequestSizeLimit(102_400_000_00)] //最大10000m左右
  51. public IActionResult UploadWord([FromForm] IFormFile file)
  52. {
  53. var doc = _DOXC2HTMLTranslator.Translate(file.OpenReadStream());
  54. return Ok(new { htmlString =doc});
  55. }
  56. /// <summary>
  57. /// htmlString AnalyzeHtml
  58. /// </summary>
  59. /// <param name="request"></param>
  60. /// <returns></returns>
  61. [HttpPost("parse-html")]
  62. public IActionResult AnalyzeHtml(JsonElement request)
  63. {
  64. if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); }
  65. (List<HTEXLib.DOCX.Models.ItemInfo> tests, List<string> error) = _HTML2ITEMV3Translator.Translate(htmlString.GetString());
  66. return Ok(new { tests, error });
  67. }
  68. /// <summary>
  69. /// htmlString AnalyzeHtml
  70. /// </summary>
  71. /// <param name="request"></param>
  72. /// <returns></returns>
  73. //[HttpPost("html-screenshot")]
  74. //public IActionResult HtmlScreenshot(JsonElement request)
  75. //{
  76. // request.TryGetProperty("htmlUrl",out JsonElement htmlUrl);
  77. // var base64 = "data:image/png;base64,"+ _HTML2IMGSTranslator.PageScreenshotAll($"{htmlUrl}");
  78. // return Ok(new { base64 });
  79. //}
  80. /// <summary>
  81. /// htmlString AnalyzeHtml
  82. /// </summary>
  83. /// <param name="request"></param>
  84. /// <returns></returns>
  85. [HttpPost("parse-emf")]
  86. public IActionResult EmfToPng(JsonElement request)
  87. {
  88. if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); }
  89. MemoryStream memoryStream = new MemoryStream();
  90. Metafile inFile = new Metafile(memoryStream);
  91. //Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly);
  92. inFile.Save(memoryStream, ImageFormat.Png);
  93. var ba = memoryStream.ToArray();
  94. var base64 = System.Convert.ToBase64String(ba);
  95. // var exercises = _HTML2ITEMV3Translator.Translate(htmlString.GetString());
  96. return Ok(base64);
  97. }
  98. }
  99. }