From 58b5c96477525eaf353bfce923adeccf9be384c7 Mon Sep 17 00:00:00 2001 From: Ragu thanigasalam Date: Fri, 8 Mar 2024 15:17:02 +0530 Subject: [PATCH 1/2] 875307: implemented the CompareFiles and CompareUrlFiles api. --- .../Controllers/DocumentEditorController.cs | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs b/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs index 0b71d4b..b4fd438 100644 --- a/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs +++ b/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs @@ -380,6 +380,96 @@ private WDocument GetDocument(IFormCollection data) stream.Dispose(); return document; } + + [AcceptVerbs("Post")] + [HttpPost] + [EnableCors("AllowAllOrigins")] + [Route("Compare")] + public string CompareDocuments([FromBody] CompareParameter data) + { + if (data.OriginalFile == null || data.RevisedFile == null) + return null; + Stream stream = new MemoryStream(); + data.OriginalFile.CopyTo(stream); + stream.Position = 0; + Stream stream1 = new MemoryStream(); + data.RevisedFile.CopyTo(stream1); + stream1.Position = 0; + string json = ""; + + using (WDocument originalDocument = new WDocument(stream, WFormatType.Docx)) + { + //Load the revised document. + using (WDocument revisedDocument = new WDocument(stream1, WFormatType.Docx)) + { + // Compare the original and revised Word documents. + originalDocument.Compare(revisedDocument); + WordDocument document = WordDocument.Load(originalDocument); + json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + originalDocument.Dispose(); + revisedDocument.Dispose(); + document.Dispose(); + } + } + return json; + } + + [AcceptVerbs("Post")] + [HttpPost] + [EnableCors("AllowAllOrigins")] + [Route("CompareUrlFiles")] + public string CompareDocumentsFromUrl([FromBody] CompareUrlParameter data) + { + if (data.OriginalFilePath == null || data.RevisedFilePath == null) + return null; + string json = ""; + using (WDocument originalDocument = new WDocument(GetDocFromURL(data.OriginalFilePath).Result, WFormatType.Docx)) + { + using (WDocument revisedDocument = new WDocument(GetDocFromURL(data.RevisedFilePath).Result, WFormatType.Docx)) + { + originalDocument.Compare(revisedDocument); + WordDocument document = WordDocument.Load(originalDocument); + json = Newtonsoft.Json.JsonConvert.SerializeObject(document); + originalDocument.Dispose(); + revisedDocument.Dispose(); + document.Dispose(); + } + } + return json; + } + public class CompareUrlParameter + { + public string OriginalFilePath { get; set; } + public string RevisedFilePath { get; set; } + } + public class CompareParameter + { + public IFormFile OriginalFile { get; set; } + public IFormFile RevisedFile { get; set; } + } + + async Task GetDocFromURL(string url) + { + string documentPath = Path.Combine(path, url); + Stream stream = null; + if (System.IO.File.Exists(documentPath)) + { + byte[] bytes = System.IO.File.ReadAllBytes(documentPath); + stream = new MemoryStream(bytes); + } + else + { + bool result = Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult) + && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); + if (result) + { + stream = GetDocumentFromURL(url).Result; + if (stream != null) + stream.Position = 0; + } + } + return stream; + } } } From 941094509f45c3a2fa9b8a92f35345599ee77242 Mon Sep 17 00:00:00 2001 From: Ragu thanigasalam Date: Fri, 8 Mar 2024 16:02:01 +0530 Subject: [PATCH 2/2] 875307: moved the review changes. --- .../Controllers/DocumentEditorController.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs b/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs index b4fd438..32ec4ff 100644 --- a/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs +++ b/src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs @@ -384,23 +384,23 @@ private WDocument GetDocument(IFormCollection data) [AcceptVerbs("Post")] [HttpPost] [EnableCors("AllowAllOrigins")] - [Route("Compare")] + [Route("CompareDocuments")] public string CompareDocuments([FromBody] CompareParameter data) { if (data.OriginalFile == null || data.RevisedFile == null) return null; - Stream stream = new MemoryStream(); - data.OriginalFile.CopyTo(stream); - stream.Position = 0; - Stream stream1 = new MemoryStream(); - data.RevisedFile.CopyTo(stream1); - stream1.Position = 0; + Stream originalDocumentStream = new MemoryStream(); + data.OriginalFile.CopyTo(originalDocumentStream); + originalDocumentStream.Position = 0; + Stream revisedDocumentStream = new MemoryStream(); + data.RevisedFile.CopyTo(revisedDocumentStream); + revisedDocumentStream.Position = 0; string json = ""; - using (WDocument originalDocument = new WDocument(stream, WFormatType.Docx)) + using (WDocument originalDocument = new WDocument(originalDocumentStream, WFormatType.Docx)) { //Load the revised document. - using (WDocument revisedDocument = new WDocument(stream1, WFormatType.Docx)) + using (WDocument revisedDocument = new WDocument(revisedDocumentStream, WFormatType.Docx)) { // Compare the original and revised Word documents. originalDocument.Compare(revisedDocument); @@ -417,7 +417,7 @@ public string CompareDocuments([FromBody] CompareParameter data) [AcceptVerbs("Post")] [HttpPost] [EnableCors("AllowAllOrigins")] - [Route("CompareUrlFiles")] + [Route("CompareDocumentsFromUrl")] public string CompareDocumentsFromUrl([FromBody] CompareUrlParameter data) { if (data.OriginalFilePath == null || data.RevisedFilePath == null)