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.Drawing.Imaging; 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 HTML2ITEMV3Translator _HTML2ITEMV3Translator { get; set; } public HtexController(PPTX2HTEXTranslator htexGenerator, DOXC2HTMLTranslator DOXC2HTMLTranslator, // HTML2IMGSTranslator HTML2IMGSTranslator, HTML2ITEMV3Translator HTML2ITEMV3Translator) { _DOXC2HTMLTranslator = DOXC2HTMLTranslator; // _HTML2IMGSTranslator = HTML2IMGSTranslator; _HTML2ITEMV3Translator = HTML2ITEMV3Translator; this.htexGenerator = htexGenerator; } [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(new { htmlString =doc}); } /// /// htmlString AnalyzeHtml /// /// /// [HttpPost("parse-html")] public IActionResult AnalyzeHtml(JsonElement request) { if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); } (List tests, List error) = _HTML2ITEMV3Translator.Translate(htmlString.GetString()); return Ok(new { tests, error }); } /// /// 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 }); //} /// /// htmlString AnalyzeHtml /// /// /// [HttpPost("parse-emf")] public IActionResult EmfToPng(JsonElement request) { if (!request.TryGetProperty("htmlString", out JsonElement htmlString)) { return BadRequest(); } MemoryStream memoryStream = new MemoryStream(); Metafile inFile = new Metafile(memoryStream); //Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly); inFile.Save(memoryStream, ImageFormat.Png); var ba = memoryStream.ToArray(); var base64 = System.Convert.ToBase64String(ba); // var exercises = _HTML2ITEMV3Translator.Translate(htmlString.GetString()); return Ok(base64); } } }