مقدمه

چه با قراردادها، سیاست‌های داخلی، مشخصات فنی یا نسخه‌های بازاریابی کار کنید، الگو یکسان است: به‌سرعت چندین نسخهٔ .docx جمع می‌کنید و در مقطعی باید دقیقاً ببینید بین آن‌ها چه تغییری رخ داده است. دیالوگ داخلی Compare در ورد برای یک بررسی دستی گاهی کافی است، اما زمانی که مقایسه بخشی از یک فرآیند منظم می‌شود یا باید به‌صورت خودکار در سمت سرور انجام شود، کمکی به‌جا نمی‌کند.

GroupDocs.Comparison for .NET به شما امکان می‌دهد این مقایسه را از داخل کد اجرا کنید و نتیجه را به فرمتی که بازبینان‌تان می‌پسندند، تولید کنید. این کتابخانه دو حالت خروجی برای اسناد ورد پشتیبانی می‌کند:

  1. Revision mode — اختلافات به‌صورت علامت‌گذاری بازنگری (track‑changes) ورد نوشته می‌شوند. بازبین‌ها فایل را باز می‌کنند، کنترل‌های آشناِ Review → Accept / Reject را می‌بینند و یک‌به‌یک تغییرات را مرور می‌کنند.
  2. Highlight mode — متن‌های اضافه‌شده، حذف‌شده و اصلاح‌شده به‌صورت برجسته‌های رنگی مستقیماً در بدنهٔ سند نمایش داده می‌شوند، به‌طوری که با یک نگاه می‌توانید تفاوت‌ها را هنگام خواندن متن نهایی مشاهده کنید.

در این مقاله هر دو رویکرد را با مثال‌های عملی C# بررسی می‌کنیم، به کلاس WordCompareOptions و ویژگی‌های آن می‌پردازیم و زمان مناسب استفاده از هر حالت را مطرح می‌کنیم.

پیش‌نیازها

قبل از شروع:

  • .NET 6.0 یا بالاتر.
  • GroupDocs.Comparison for .NET — نصب از طریق NuGet:
dotnet add package GroupDocs.Comparison
  • یک فایل لایسنس (GroupDocs.Comparison.lic). بدون آن کتابخانه در حالت ارزیابی با واترمارک و محدودیت‌های اندازه اجرا می‌شود. می‌توانید برای تست یک مجوز موقت درخواست کنید.
  • دو فایل Word برای مقایسه — ما آن‌ها را source.docx و target.docx می‌نامیم. نمونه محتوا:
source.docx target.docx

روش ۱: مقایسه با حالت ردیاب تغییرات (Revision‑Track)

زمان استفاده: بازبینان نیاز دارند هر تغییر را به‌صورت جداگانه در Microsoft Word با ابزارهای داخلی Review → Accept / Reject بپذیرند یا رد کنند — برای مثال، در دوره‌های مذاکرهٔ قرارداد یا تایید سیاست‌ها.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_revision.docx", options);
}

سند خروجی در حالت ردیابی تغییرات (revision):

Comparison result in revision (track changes) mode

آنچه در پشت صحنه اتفاق می‌افتد:

  • ComparisonDisplayMode.Revisions به موتور می‌گوید تا علامت‌گذاری بومی track‑changes ورد را تولید کند.
  • DetectStyleChanges = true باعث می‌شود مقایسه به‌طور همزمان تغییرات قالب‌بندی (درشت‌نویسی، اندازهٔ قلم، رنگ) را نیز شناسایی کند.
  • فایل خروجی در Microsoft Word باز می‌شود و پانل Review آماده است — هر اضافه، حذف و تغییر سبک به‌صورت فهرست‑شده ظاهر می‌شود و می‌توان آن را پذیرفت یا رد کرد.

چون حالت ردیابی فقط متادیتای تغییرات را اضافه می‌کند و محتوا را باز‑رندری نمی‌کند، عموماً سریع‌تر از حالت دوم است.


روش ۲: مقایسه با حالت برجسته‌سازی (Highlight‑Mode)

زمان استفاده: ذینفعان مستندی تمیز می‌خواهند که به‌وضوح نشان دهد چه چیزی تغییر کرده است اما نیازی به مرور هر بازنگری ندارند. سناریوی معمول یک مدیر است که آخرین نسخه را در Word باز می‌کند و به‌سرعت برجسته‌های درج و حذف را اسکن می‌کند تا اثر به‌روزرسانی را درک کند.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
    };

    comparer.Compare("result_highlighted.docx", options);
}

سند خروجی در حالت برجسته‌سازی:

Comparison result in highlight mode

آنچه در پشت صحنه اتفاق می‌افتد:

  • ComparisonDisplayMode.Highlight اختلافات را به‌صورت برجسته‌های رنگی درون‌خطی رندر می‌کند — قرمز برای حذف‌ها، سبز برای درج‌ها، آبی برای تغییرات قالب (رنگ‌های پیش‌فرض را می‌توان از طریق WordCompareOptions / CompareOptions و StyleSettings مرتبط تنظیم کرد).
  • سند آمادهٔ خواندن یا چاپ است بدون نیاز به گام‌های اضافی.
  • هیچ متادیتای ردیاب تغییرات به فایل اضافه نمی‌شود.

حالت برجسته‌سازی کار داخلی بیشتری انجام می‌دهد چون باید محتویات واقعی سند را تغییر داده و قالب‌بندی اعمال کند. برای فایل‌های بزرگ ممکن است تفاوت عملکرد قابل‌توجهی نسبت به حالت ردیابی مشاهده کنید.


بررسی کلاس WordCompareOptions

هر دو مثال بالا از WordCompareOptions استفاده می‌کنند — کلاسی که تنظیمات عمومی را از CompareOptions به ارث می‌برد و ویژگی‌های خاص اسناد ورد را اضافه می‌کند. از طریق این شیء می‌توانید حالت نمایش (DisplayMode)، ردیابی تغییرات قالب (DetectStyleChanges)، نام نویسنده‌ای که بر روی بازنگری‌ها ظاهر می‌شود (RevisionAuthorName) و نحوهٔ برخورد با شکست‌های خطی، نشانک‌ها و غیره را کنترل کنید.

علاوه بر این، CompareOptions پایه‌ای است که سبک‌های موارد اضافه‌شده، حذف‌شده و تغییر‑یافته را (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle) در اختیار می‌گذارد، بنابراین می‌توانید رنگ‌ها و قالب‌بندی برجسته‌ها را در صورت نیاز دقیقاً تنظیم کنید.

در اینجا یک مثال کوچک برای پیکربندی گزینه‌ها صرفاً برای بررسی متنی در حالت ردیابی آورده شده است:

var options = new WordCompareOptions
{
    DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
    DetectStyleChanges = false,
    RevisionAuthorName = "QA Bot",
    CompareBookmarks = true
};

دریافت تغییرات به‌صورت برنامه‌نویسی

صرف‌نظر از حالتی که برای خروجی انتخاب می‌کنید (revision یا highlight)، می‌توانید همیشه فهرست ساختاریافته‌ای از تفاوت‌های شناسایی‌شده را از طریق API عمومی Comparer.GetChanges به‌دست آورید. این متد برای Word و سایر فرمت‌های پشتیبانی‌شده کار می‌کند.

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    comparer.Compare("result_revision.docx");

    var changes = comparer.GetChanges(); // returns ChangeInfo[]
}

این قابلیت زمانی مفید است که نیاز به پردازش پس‌از‑مقایسه در جریان کاری خود داشته باشید — برای مثال، ساخت گزارش HTML سفارشی، تغذیهٔ اختلافات به یک سیستم بازبینی یا تجمیع آمارهای ویرایش. برای جزئیات بیشتر به مرجع رسمی API مراجعه کنید: Comparer.GetChanges.


کار با اسناد دارای رمز عبور

اگر اسناد با رمز عبور محافظت شده باشند، همچنان می‌توان آن‌ها را مقایسه کرد: رمز عبور از طریق LoadOptions هنگام ساخت Comparer پاس داده می‌شود. این روش برای Word، PDF و سایر فرمت‌های پشتیبانی‌شده به‌یک‌سان کار می‌کند.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source_protected.docx",
    new LoadOptions { Password = "secret" }))
{
    comparer.Add("target_protected.docx");

    var options = new WordCompareOptions
    {
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_protected.docx", options);
}

دریافت نسخه آزمایشی رایگان

می‌توانید GroupDocs.Comparison for .NET را از صفحهٔ انتشارهای رسمی دانلود کنید. برای تست بدون محدودیت، یک مجوز موقت درخواست کنید — نیازی به کارت‌اعتبار نیست.


سوالات متداول

س: آیا برای اجرا بر روی سرور به Microsoft Word یا Office نیاز است؟
ج: خیر. GroupDocs.Comparison یک کتابخانهٔ مستقل .NET است؛ فایل‌های DOCX را به‌صورت خودکار می‌خواند و می‌نویسد.

س: آیا می‌توان اسناد را در فرمت‌های دیگری جز Word مقایسه کرد؟
ج: بله — کتابخانه از PDF، صفحات Excel، ارائه‌ها، فایل‌های متنی ساده و بسیاری موارد دیگر پشتیبانی می‌کند. فهرست کامل در مستندات موجود است.

س: اگر لایسنس تنظیم نکنم چه می‌شود؟
ج: کتابخانه در حالت ارزیابی کار می‌کند. اسناد خروجی دارای واترمارک می‌شود و فقط چند صفحهٔ اولیه پردازش می‌گردند. یک مجوز موقت این محدودیت‌ها را برای تست حذف می‌کند.

س: آیا می‌توان رنگ‌های برجسته را سفارشی کرد؟
ج: رنگ‌های پیش‌فرض برای اکثر موارد کافی هستند. برای کنترل پیشرفته‌تر استایل‌ها، به ویژگی StyleSettings در CompareOptions مراجعه کنید.


نتیجه‌گیری

GroupDocs.Comparison for .NET دو روش تمیز برای مقایسهٔ اسناد Word از داخل کد ارائه می‌دهد. حالت ردیابی (revision) مستقیماً با جریان کاری بازبینی که تیم‌تان استفاده می‌کند یکپارچه می‌شود؛ حالت برجسته‌سازی (highlight) یک خلاصهٔ بصری فوری برای افرادی که فقط نیاز به مشاهدهٔ تغییرات دارند، فراهم می‌کند. کلاس WordCompareOptions به شما امکان می‌دهد خروجی را دقیقاً تنظیم کنید — از تشخیص سبک و انتساب نویسنده تا مقایسهٔ نشانک‌ها و ویژگی‌های سند.

حالت مناسب را بر اساس سناریوی خود انتخاب کنید یا هر دو را تولید کنید و اجازه دهید هر مخاطب نمای دلخواه خود را انتخاب کند.

منابع تکمیلی