using HTEXLib; using HTEXLib.Builders; using HTEXLib.DOCX.Models; using HTEXLib.Helpers.ShapeHelpers; using HTEXLib.Translator; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace HTEXWeb.Controllers { [ApiController] [Route("htex")] public class HtexController: ControllerBase { public PPTX2HTEXTranslator htexGenerator { get; set; } public DOXC2HTMLTranslator _DOXC2HTMLTranslator { get; set; } public HTML2ITEMTranslator _HTML2ITEMTranslator { get; set; } public HTML2IMGSTranslator _HTML2IMGSTranslator { get; set; } public HTML2ITEMV2Translator _HTML2ITEMV2Translator { get; set; } public HtexController(PPTX2HTEXTranslator htexGenerator, DOXC2HTMLTranslator DOXC2HTMLTranslator, HTML2ITEMTranslator HTML2ITEMTranslator, HTML2IMGSTranslator HTML2IMGSTranslator, HTML2ITEMV2Translator HTML2ITEMV2Translator ,IWebHostEnvironment webHostEnvironment) { _DOXC2HTMLTranslator = DOXC2HTMLTranslator; _HTML2ITEMTranslator = HTML2ITEMTranslator; _HTML2IMGSTranslator = HTML2IMGSTranslator; _HTML2ITEMV2Translator = HTML2ITEMV2Translator; this.htexGenerator = htexGenerator; string path = webHostEnvironment.ContentRootPath + "/Config/LangConfig.json"; FileStream fs = new FileStream(path, System.IO.FileMode.Open, FileAccess.Read, FileShare.ReadWrite); StreamReader sr = new StreamReader(fs, System.Text.Encoding.UTF8); string line; StringBuilder builder = new StringBuilder(); while ((line = sr.ReadLine()) != null) { builder.Append(line.ToString()); } sr.Close(); string text = builder.ToString(); // langConfigs = text.FromJson>(); } [HttpPost("generator")] public object Generator([FromForm] IFormFile file) { return JsonSerializer.Deserialize(JsonHelper.ToJson(htexGenerator.Translate(file.OpenReadStream()),ignoreNullValue:false)); } /// /// docUrl /// folder /// shaCode /// /// UploadWord /// /// /// [HttpPost("upload-word")] [RequestSizeLimit(102_400_000_00)] //最大10000m左右 public IActionResult UploadWord([FromForm] IFormFile file) { var doc = _DOXC2HTMLTranslator.Translate(file.OpenReadStream()); return Ok(doc); } /// /// htmlString AnalyzeHtml /// /// /// [HttpPost("parse-html")] public IActionResult AnalyzeHtml(JsonElement request) { if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); } request.TryGetProperty("lang", out JsonElement lang); var exercises = _HTML2ITEMV2Translator.Translate(htmlString.GetString(), lang); return Ok(exercises); } /// /// htmlString AnalyzeHtml /// /// /// [HttpPost("html-screenshot")] public IActionResult HtmlScreenshot(JsonElement request) { request.TryGetProperty("htmlUrl",out JsonElement htmlUrl); var base64 = "data:image/png;base64,"+ _HTML2IMGSTranslator.PageScreenshotAll($"{htmlUrl}"); return Ok(new { base64 }); } } }