Untitled
unknown
plain_text
a year ago
9.4 kB
7
Indexable
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Syncfusion.EJ2.PdfViewer; using System; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Text.Json.Nodes; using System.Text.Json.Serialization; namespace BE_gperiti.Controllers { [Route("api/[controller]")] [ApiController] public class PdfViewerController : ControllerBase { private readonly IWebHostEnvironment _hostingEnvironment; private readonly IMemoryCache _cache; public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache) { _hostingEnvironment = hostingEnvironment; _cache = cache; Console.WriteLine("PdfViewerController initialized"); } [HttpPost("Load")] public IActionResult Load([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); MemoryStream stream = new MemoryStream(); var jsonObject = JsonConverterstring(responseData); object jsonResult = new object(); if (jsonObject != null && jsonObject.ContainsKey("document")) { if (bool.Parse(jsonObject["isFileName"])) { string documentPath = GetDocumentPath(jsonObject["document"]); if (!string.IsNullOrEmpty(documentPath)) { byte[] bytes = System.IO.File.ReadAllBytes(documentPath); stream = new MemoryStream(bytes); } else { string fileName = jsonObject["document"].Split(new string[] { "://" }, StringSplitOptions.None)[0]; if (fileName == "http" || fileName == "https") { WebClient WebClient = new WebClient(); byte[] pdfDoc = WebClient.DownloadData(jsonObject["document"]); stream = new MemoryStream(pdfDoc); } else return this.Content(jsonObject["document"] + " is not found"); } } else { byte[] bytes = Convert.FromBase64String(jsonObject["document"]); stream = new MemoryStream(bytes); } } jsonResult = pdfviewer.Load(stream, jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(jsonResult)); } [HttpPost("RenderPdfPages")] public IActionResult RenderPdfPages([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); object jsonResult = pdfviewer.GetPage(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(jsonResult)); } [HttpPost("Unload")] public IActionResult Unload([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); pdfviewer.ClearCache(jsonObject); return this.Content("Document cache is cleared"); } [HttpPost("RenderThumbnailImages")] public IActionResult RenderThumbnailImages([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); object result = pdfviewer.GetThumbnailImages(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(result)); } [HttpPost("Bookmarks")] public IActionResult Bookmarks([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); object jsonResult = pdfviewer.GetBookmarks(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(jsonResult)); } [HttpPost("RenderAnnotationComments")] public IActionResult RenderAnnotationComments([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); object jsonResult = pdfviewer.GetAnnotationComments(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(jsonResult)); } [HttpPost("ExportAnnotations")] public IActionResult ExportAnnotations([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); string jsonResult = pdfviewer.ExportAnnotation(jsonObject); return Content(jsonResult); } [HttpPost("ImportAnnotations")] public IActionResult ImportAnnotations([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); string jsonResult = string.Empty; object JsonResult; if (jsonObject != null && jsonObject.ContainsKey("fileName")) { string documentPath = GetDocumentPath(jsonObject["fileName"]); if (!string.IsNullOrEmpty(documentPath)) { jsonResult = System.IO.File.ReadAllText(documentPath); } else { return this.Content(jsonObject["document"] + " is not found"); } } else { string extension = Path.GetExtension(jsonObject["importedData"]); if (extension != ".xfdf") { JsonResult = pdfviewer.ImportAnnotation(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(JsonResult)); } else { string documentPath = GetDocumentPath(jsonObject["importedData"]); if (!string.IsNullOrEmpty(documentPath)) { byte[] bytes = System.IO.File.ReadAllBytes(documentPath); jsonObject["importedData"] = Convert.ToBase64String(bytes); JsonResult = pdfviewer.ImportAnnotation(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(JsonResult)); } else { return this.Content(jsonObject["document"] + " is not found"); } } } return Content(jsonResult); } [HttpPost("Download")] public IActionResult Download([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); string documentBase = pdfviewer.GetDocumentAsBase64(jsonObject); return Content(documentBase); } [HttpPost("PrintImages")] public IActionResult PrintImages([FromBody] jsonObjects responseData) { PdfRenderer pdfviewer = new PdfRenderer(_cache); var jsonObject = JsonConverterstring(responseData); object pageImage = pdfviewer.GetPrintImage(jsonObject); return Content(System.Text.Json.JsonSerializer.Serialize(pageImage)); } private string GetDocumentPath(string document) { string documentPath = string.Empty; if (!System.IO.File.Exists(document)) { string basePath = _hostingEnvironment.WebRootPath; string dataPath = string.Empty; dataPath = basePath + "/"; if (System.IO.File.Exists(dataPath + (document))) documentPath = dataPath + document; } else { documentPath = document; } return documentPath; } private Dictionary<string, string> JsonConverterstring(jsonObjects results) { Dictionary<string, object> resultObjects = results.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public) .ToDictionary(prop => prop.Name, prop => prop.GetValue(results, null)); var emptyObjects = (from kv in resultObjects where kv.Value != null select kv).ToDictionary(kv => kv.Key, kv => kv.Value); Dictionary<string, string> jsonResult = emptyObjects.ToDictionary(k => k.Key, k => k.Value.ToString()); return jsonResult; } } }
Editor is loading...
Leave a Comment