نحتاج غالبًا إلى مقارنة وثيقتين MS Word DOC / DOCX للتحقق من أوجه التشابه أو الاختلافات. تعطينا المقارنة فكرة عما تم تغييره في نسختين من مستند Word واحد. تتوفر العديد من تطبيقات مقارنة المستندات عبر الإنترنت والتي تتيح لك مقارنة مستندين من مستندات Word. ومع ذلك ، قد تكون هناك حالة عندما تحتاج إلى دمج ميزات مقارنة المستندات داخل تطبيق الويب الخاص بك. من ناحية أخرى ، قد ترغب في إنشاء تطبيق مقارنة المستندات عبر الإنترنت. للتعامل مع مثل هذه الحالات ، سأوضح لك كيفية مقارنة اثنين من Word DOCX باستخدام C# داخل تطبيق الويب ASP.NET. سيحتوي هذا التطبيق على الميزات التالية.
- C# .NET API لمقارنة مستندات Word DOCX
- قارن بين مستندين Word (DOC / DOCX) في C#
- قم بتنزيل نتيجة المقارنة بتنسيق DOCX
- قم بتنزيل نتيجة المقارنة بتنسيق PDF
C# .NET API لمقارنة Word DOCX
لإجراء مقارنة بين مستندات Word بدون MS Office ، سنستخدم Aspose.Words for .NET وهي واجهة برمجة تطبيقات قوية لمعالجة النصوص لـ ASP.NET أو تطبيقات NET / .NET Core الأخرى. يمكنك تنزيل API أو تثبيته داخل تطبيق ASP.NET الخاص بك باستخدام NuGet.
PM> Install-Package Aspose.Words
قارن بين مستندات Word في C# ASP.NET
- قم بإنشاء تطبيق ويب ASP.NET Core جديد في Visual Studio 2017 أو أحدث.
- اختر قالب تطبيق الويب (Model-View-Controller).
- قم بتثبيت حزمة Aspose.Words for .NET باستخدام NuGet Package Manager.
- انسخ والصق البرنامج النصي التالي في طريقة العرض 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-->
- بناء التطبيق وتشغيله في المتصفح.
C# ASP.NET Word DOCX Comparison App - Demo
فيما يلي عرض توضيحي لكيفية مقارنة مستندين من مستندات Word باستخدام تطبيق مقارنة المستندات C# ASP.NET.
قم بتنزيل تطبيق مقارنة C# ASP.NET DOCX
يمكنك تنزيل الكود المصدري الكامل لتطبيق مقارنة مستندات ASP.NET Word من هنا.
حول Aspose.Words for .NET
جرب Aspose.Words for .NET مجانًا
تقدم Aspose ترخيصًا مؤقتًا لتجربة Aspose APIs مجانًا. احصل على تقييم Aspose.Words for .NET.