مقدمه

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

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

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

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

پیش‌نیازها

قبل از شروع:

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

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

زمان استفاده: مرورگران باید هر تغییر را به‌صورت جداگانه در مایکروسافت ورد با ابزارهای داخلی 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);
}

سندی که در حالت اصلاح (track changes) تولید می‌شود:

Comparison result in revision (track changes) mode

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

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

چون حالت اصلاح نیازی به باز‑رسم محتویات سند نیست — به‌سادگی متادیتای اصلاحات را می‌چسباند — معمولاً سریع‌تر از دو حالت دیگر است.


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

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

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);
}

سندی که در حالت Highlight تولید می‌شود:

Comparison result in highlight mode

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

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

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


بررسی WordCompareOptions

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

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

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

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

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

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

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 ارسال می‌شود. این روش برای ورد، 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 برای .NET را از صفحهٔ انتشارهای رسمی دانلود کنید. برای تست بدون محدودیت، یک لایسنس موقت درخواست کنید — نیازی به کارت اعتباری نیست.


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

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

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

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

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


نتیجه‌گیری

GroupDocs.Comparison برای .NET دو روش تمیز برای مقایسهٔ اسناد ورد از کد فراهم می‌کند. حالت Revision مستقیماً به جریان کاری بررسی که تیم شما استفاده می‌کند وصل می‌شود؛ حالت Highlight خلاصهٔ بصری سریعی برای افرادی که فقط نیاز به دیدن تغییرات دارند ارائه می‌دهد. کلاس WordCompareOptions به شما اجازه می‌دهد خروجی را دقیقاً تنظیم کنید — از شناسایی سبک و انتساب نویسنده تا مقایسهٔ نشانک‌ها و ویژگی‌های سند.

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

منابع تکمیلی