Сравните документы Word в ASP.NET

Нам часто нужно сравнить два документа MS Word DOC/DOCX, чтобы проверить сходство или различие. Сравнение дает нам представление о том, что изменилось в двух версиях одного документа Word. Доступны различные приложения онлайн-сравнение документов, которые позволяют сравнивать два документа Word. Однако может быть случай, когда вам нужно интегрировать функции сравнения документов в ваше веб-приложение. С другой стороны, вы можете создать собственное онлайн-приложение для сравнения документов. Чтобы справиться с такими случаями, я покажу вам, как сравнить два документа Word с помощью C# в веб-приложении ASP.NET. Это приложение будет иметь следующие функции.

  • Сравните два документа Word (DOC/DOCX)
  • Скачать результат сравнения в формате DOCX
  • Скачать результат сравнения в формате PDF

.NET API для сравнения документов Word

Чтобы выполнить сравнение документов Word без MS Office, мы будем использовать Aspose.Words for .NET, который представляет собой мощный API обработки текстов для ASP.NET или других приложений .NET/.NET Core. Вы можете загрузить API или установить его в своем приложении ASP.NET с помощью NuGet.

PM> Install-Package Aspose.Words

Сравните два документа Word в C# ASP.NET

  • Создайте новое веб-приложение ASP.NET Core в Visual Studio 2017 или более поздней версии.
Создание основного веб-приложения ASP.NET
  • Выберите шаблон веб-приложения (модель-представление-контроллер).
Выберите приложение MVC
  • Установите пакет Aspose.Words для .NET с помощью диспетчера пакетов NuGet.
.NET API для сравнения слов
  • Скопируйте и вставьте следующий скрипт в представление index.cshtml.
@{
    ViewData["Title"] = "MS Word Comparison in ASP.NET";
}
<h2 class="text-info">Compare Two Word DOC/DOCX Documents</h2>
<p class="text-info">Compare the contents of MS Word documents and get the results in DOCX or PDF format.</p>
<br />
<form asp-controller="Home" asp-action="UploadFiles" method="post" class="form-inline dropzone" enctype="multipart/form-data">
    <div class="row">
        <div class="col-md-6" align="center"> 
            <div class="form-group">
                <input type="file" id="input-id" name="files" accept=".doc, .docx" class="form-control file" data-preview-file-type="text" />
            </div>
        </div>
        <div class="col-md-6" align="center"> 
            <div class="form-group">
                <input type="file" id="input-id2" name="files" accept=".doc, .docx" class="form-control file" />
            </div>
        </div>
    </div>
    <br />
    <div class="row">
        <div class="col-md-12" align="center">
            <div class="form-group">
                <p class="text-info">
                    <strong>Output format:</strong>
                    <select name="outputFormat" class="form-control">
                        <option value="DOCX">DOCX</option>
                        <option value="PDF">PDF</option>
                    </select>
                </p>

            </div>
            <div class="col-md-12" align="center">
                <div class="form-group">
                    <button type="submit" class="form-control btn btn-success">Compare and Download</button>
                </div>
            </div>
        </div>
    </div>
</form>
<script> 
    // Перетащите параметры плагина
    $("#input-id").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
    $("#input-id2").fileinput({ 'showUpload': false, 'previewFileType': 'any', 'showClose': false });
</script>
  • Скопируйте и вставьте следующий метод в контроллер HomeController.cs.
[HttpPost]
public FileResult UploadFiles(List<IFormFile> files, string outputFormat)
{
	if(files.Count()==0)
	{
		return null;
	}
	string fileName = "result.docx";
	// Загрузить файлы
	var file1 = Path.Combine("wwwroot/uploads", files[0].FileName);
	var file2 = Path.Combine("wwwroot/uploads", files[1].FileName);
	using (var stream = new FileStream(file1, FileMode.Create))
	{
		files[0].CopyTo(stream);
	}
	using (var stream = new FileStream(file2, FileMode.Create))
	{
		files[1].CopyTo(stream);
	}
	// Загрузить документы Word
	Document doc1 = new Document(file1);
	Document doc2 = new Document(file2);
	// Установить функции сравнения
	CompareOptions compareOptions = new CompareOptions();
	compareOptions.IgnoreFormatting = true;
	compareOptions.IgnoreCaseChanges = true;
	compareOptions.IgnoreComments = true;
	compareOptions.IgnoreTables = true;
	compareOptions.IgnoreFields = true;
	compareOptions.IgnoreFootnotes = true;
	compareOptions.IgnoreTextboxes = true;
	compareOptions.IgnoreHeadersAndFooters = true;
	compareOptions.Target = ComparisonTargetType.New;

	var outputStream = new MemoryStream();
	// Сравните документы Word
	doc1.Compare(doc2, "John Doe", DateTime.Now, compareOptions);
	if (outputFormat == "DOCX")
	{
		// Для сравнения результат в формате DOCX
		doc1.Save(outputStream, SaveFormat.Docx);
		outputStream.Position = 0;
		// Вернуть сгенерированный файл Word
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Rtf, fileName);
	}
	else
	{
		// Для сравнения результат в PDF
		fileName = "result.pdf";
		doc1.Save(outputStream, SaveFormat.Pdf);
		outputStream.Position = 0;
		// Вернуть сгенерированный файл PDF
		return File(outputStream, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
	}    
}
  • Вставьте следующие файлы CSS и JS плагина перетаскивания в тег заголовка представления \layout.cshtml.
<!--drag and drop file plugin-->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.9/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.9/js/fileinput.min.js"></script> 
<!--end of drag and drop-->
  • Создайте приложение и запустите его в браузере.

Приложение для сравнения документов ASP.NET Word — демонстрация

Ниже показано, как сравнить два документа Word с помощью нашего приложения для сравнения документов ASP.NET.

Сравните Word DOCX в ASP.NET

Сравнение Word DOCX в ASP.NET

Скачать

Вы можете загрузить полный исходный код приложения для сравнения документов ASP.NET Word из здесь.

О Aspose.Words для .NET

Попробуйте Aspose.Words для .NET бесплатно

Aspose предлагает временную лицензию для бесплатного опробования API Aspose. Получите возможность оценить Aspose.Words для .NET.

Связанная статья