قارن مستندات Word في ASP.NET

نحتاج غالبًا إلى مقارنة وثيقتين 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 أو أحدث.
إنشاء تطبيق ويب ASP.NET Core
  • اختر قالب تطبيق الويب (Model-View-Controller).
حدد تطبيق MVC
  • قم بتثبيت حزمة Aspose.Words for .NET باستخدام NuGet Package Manager.
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-->
  • بناء التطبيق وتشغيله في المتصفح.

C# ASP.NET Word DOCX Comparison App - Demo

فيما يلي عرض توضيحي لكيفية مقارنة مستندين من مستندات Word باستخدام تطبيق مقارنة المستندات C# ASP.NET.

قارن Word DOCX في ASP.NET

مقارنة Word DOCX في ASP.NET

قم بتنزيل تطبيق مقارنة C# ASP.NET DOCX

يمكنك تنزيل الكود المصدري الكامل لتطبيق مقارنة مستندات ASP.NET Word من هنا.

حول Aspose.Words for .NET

جرب Aspose.Words for .NET مجانًا

تقدم Aspose ترخيصًا مؤقتًا لتجربة Aspose APIs مجانًا. احصل على تقييم Aspose.Words for .NET.

مقالات لها صلة