HtexController.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 HTML2ITEMV2Translator _HTML2ITEMV2Translator { get; set; }
  27. public HtexController(PPTX2HTEXTranslator htexGenerator, DOXC2HTMLTranslator DOXC2HTMLTranslator, HTML2ITEMTranslator HTML2ITEMTranslator, HTML2IMGSTranslator HTML2IMGSTranslator, HTML2ITEMV2Translator HTML2ITEMV2Translator ,IWebHostEnvironment webHostEnvironment) {
  28. _DOXC2HTMLTranslator = DOXC2HTMLTranslator;
  29. _HTML2ITEMTranslator = HTML2ITEMTranslator;
  30. _HTML2IMGSTranslator = HTML2IMGSTranslator;
  31. _HTML2ITEMV2Translator = HTML2ITEMV2Translator;
  32. this.htexGenerator = htexGenerator;
  33. string path = webHostEnvironment.ContentRootPath + "/Config/LangConfig.json";
  34. FileStream fs = new FileStream(path, System.IO.FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
  35. StreamReader sr = new StreamReader(fs, System.Text.Encoding.UTF8);
  36. string line;
  37. StringBuilder builder = new StringBuilder();
  38. while ((line = sr.ReadLine()) != null)
  39. {
  40. builder.Append(line.ToString());
  41. }
  42. sr.Close();
  43. string text = builder.ToString();
  44. // langConfigs = text.FromJson<List<LangConfig>>();
  45. }
  46. [HttpPost("generator")]
  47. public object Generator([FromForm] IFormFile file)
  48. {
  49. return JsonSerializer.Deserialize<JsonElement>(JsonHelper.ToJson(htexGenerator.Translate(file.OpenReadStream()),ignoreNullValue:false));
  50. }
  51. /// <summary>
  52. /// docUrl
  53. /// folder
  54. /// shaCode
  55. ///
  56. /// UploadWord
  57. /// </summary>
  58. /// <param name="request"></param>
  59. /// <returns></returns>
  60. [HttpPost("upload-word")]
  61. [RequestSizeLimit(102_400_000_00)] //最大10000m左右
  62. public IActionResult UploadWord([FromForm] IFormFile file)
  63. {
  64. var doc = _DOXC2HTMLTranslator.Translate(file.OpenReadStream());
  65. return Ok(doc);
  66. }
  67. /// <summary>
  68. /// htmlString AnalyzeHtml
  69. /// </summary>
  70. /// <param name="request"></param>
  71. /// <returns></returns>
  72. [HttpPost("parse-html")]
  73. public IActionResult AnalyzeHtml(JsonElement request)
  74. {
  75. if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); }
  76. request.TryGetProperty("lang", out JsonElement lang);
  77. var exercises = _HTML2ITEMV2Translator.Translate(htmlString.GetString(), lang);
  78. return Ok(exercises);
  79. }
  80. /// <summary>
  81. /// htmlString AnalyzeHtml
  82. /// </summary>
  83. /// <param name="request"></param>
  84. /// <returns></returns>
  85. [HttpPost("html-screenshot")]
  86. public IActionResult HtmlScreenshot(JsonElement request)
  87. {
  88. request.TryGetProperty("htmlUrl",out JsonElement htmlUrl);
  89. var base64 = "data:image/png;base64,"+ _HTML2IMGSTranslator.PageScreenshotAll($"{htmlUrl}");
  90. return Ok(new { base64 });
  91. }
  92. }
  93. }