HtexController.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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.IO;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Text.Json;
  15. using System.Threading.Tasks;
  16. namespace HTEXWeb.Controllers
  17. {
  18. [ApiController]
  19. [Route("htex")]
  20. public class HtexController: ControllerBase
  21. {
  22. public PPTX2HTEXTranslator htexGenerator { get; set; }
  23. public DOXC2HTMLTranslator _DOXC2HTMLTranslator { get; set; }
  24. public HTML2ITEMTranslator _HTML2ITEMTranslator { get; set; }
  25. // public HTML2IMGSTranslator _HTML2IMGSTranslator { get; set; }
  26. public HTML2ITEMV3Translator _HTML2ITEMV3Translator { get; set; }
  27. public HtexController(PPTX2HTEXTranslator htexGenerator, DOXC2HTMLTranslator DOXC2HTMLTranslator, // HTML2IMGSTranslator HTML2IMGSTranslator,
  28. HTML2ITEMV3Translator HTML2ITEMV3Translator) {
  29. _DOXC2HTMLTranslator = DOXC2HTMLTranslator;
  30. // _HTML2IMGSTranslator = HTML2IMGSTranslator;
  31. _HTML2ITEMV3Translator = HTML2ITEMV3Translator;
  32. this.htexGenerator = htexGenerator;
  33. }
  34. [HttpPost("generator")]
  35. public object Generator([FromForm] IFormFile file)
  36. {
  37. return JsonSerializer.Deserialize<JsonElement>(JsonHelper.ToJson(htexGenerator.Translate(file.OpenReadStream()),ignoreNullValue:false));
  38. }
  39. /// <summary>
  40. /// docUrl
  41. /// folder
  42. /// shaCode
  43. ///
  44. /// UploadWord
  45. /// </summary>
  46. /// <param name="request"></param>
  47. /// <returns></returns>
  48. [HttpPost("upload-word")]
  49. [RequestSizeLimit(102_400_000_00)] //最大10000m左右
  50. public IActionResult UploadWord([FromForm] IFormFile file)
  51. {
  52. var doc = _DOXC2HTMLTranslator.Translate(file.OpenReadStream());
  53. return Ok(new { htmlString =doc});
  54. }
  55. /// <summary>
  56. /// htmlString AnalyzeHtml
  57. /// </summary>
  58. /// <param name="request"></param>
  59. /// <returns></returns>
  60. [HttpPost("parse-html")]
  61. public IActionResult AnalyzeHtml(JsonElement request)
  62. {
  63. if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); }
  64. var exercises = _HTML2ITEMV3Translator.Translate(htmlString.GetString());
  65. return Ok(exercises);
  66. }
  67. /// <summary>
  68. /// htmlString AnalyzeHtml
  69. /// </summary>
  70. /// <param name="request"></param>
  71. /// <returns></returns>
  72. //[HttpPost("html-screenshot")]
  73. //public IActionResult HtmlScreenshot(JsonElement request)
  74. //{
  75. // request.TryGetProperty("htmlUrl",out JsonElement htmlUrl);
  76. // var base64 = "data:image/png;base64,"+ _HTML2IMGSTranslator.PageScreenshotAll($"{htmlUrl}");
  77. // return Ok(new { base64 });
  78. //}
  79. }
  80. }