Введение

Независимо от того, работаете ли вы с контрактами, внутренними политиками, техническими спецификациями или маркетинговыми материалами, схема одинакова: вы быстро накапливаете несколько версий .docx и в какой‑то момент нужно увидеть, что именно изменилось между ними. Встроенный диалог Compare в Word подходит для случайных ручных проверок, но мало помогает, когда сравнение становится частью регулярного процесса или должно быть автоматизировано на стороне сервера.

GroupDocs.Comparison for .NET позволяет выполнять сравнение из кода и получать результат в том формате, который предпочитают ваши рецензенты. Библиотека поддерживает два режима вывода сравнения для документов Word:

  1. Режим правок — различия записываются как разметка правок Word (track‑changes). Рецензенты открывают файл, видят привычные элементы управления Review → Accept / Reject и работают с изменениями по одному.
  2. Режим подсветки — вставленный, удалённый и изменённый текст отображается цветными подсветками непосредственно в теле документа, поэтому различия видны сразу при чтении финального текста.

В этой статье мы пройдем оба подхода с работающими примерами на C#, изучим класс WordCompareOptions и его свойства, а также обсудим, когда каждый из режимов имеет больше смыслa.

Необходимые условия

Перед началом:

  • .NET 6.0 или новее.
  • GroupDocs.Comparison for .NET — установить через NuGet:
dotnet add package GroupDocs.Comparison
  • Файл лицензии (GroupDocs.Comparison.lic). Без него библиотека работает в режиме оценки с водяными знаками и ограничениями по размеру. Вы можете запросить temporary license для тестирования.
  • Два Word‑файла для сравнения — назовём их source.docx и target.docx. Пример содержимого:
source.docx target.docx

Метод 1: Сравнение с отслеживанием правок

Когда использовать: рецензентам нужно принимать или отклонять каждое изменение индивидуально в 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);
}

Полученный документ в режиме правок (track changes):

Comparison result in revision (track changes) mode

Что происходит под капотом:

  • ComparisonDisplayMode.Revisions указывает движку генерировать нативную разметку Word track‑changes.
  • DetectStyleChanges = true заставляет сравнение учитывать различия форматирования (жирный шрифт, размер, цвет) наряду с текстовыми правками.
  • Выходной файл открывается в Microsoft Word с готовой панелью Review — каждая вставка, удаление и изменение стиля перечислены и могут быть приняты или отклонены.

Поскольку режим правок не требует повторного рендеринга содержимого документа — он просто добавляет метаданные правок — он, как правило, быстрее второго режима.


Метод 2: Сравнение в режиме подсветки

Когда использовать: заинтересованные стороны хотят чистый документ, в котором явно показаны изменения, но им не требуется проходить каждую правку. Типичный сценарий — менеджер, открывающий последнюю версию в 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).
  • Документ готов к чтению или печати без дополнительных шагов.
  • В файл не добавляются метаданные track‑changes.

Режим подсветки требует больше внутренних вычислений, потому что необходимо изменять фактическое содержимое документа и применять форматирование. Для больших файлов вы можете заметить значительную разницу в производительности по сравнению с режимом правок.


Исследование WordCompareOptions

Оба примера выше используют WordCompareOptions — класс, наследующий общие настройки из CompareOptions и добавляющий свойства, специфичные для Word‑документов. С его помощью вы контролируете режим отображения (DisplayMode), отслеживание изменений стилей (DetectStyleChanges), имя автора, которое будет отображаться в правках (RevisionAuthorName), а также сравнение разрывов строк, закладок и т.д.

Кроме того, базовый CompareOptions раскрывает стили для вставленных, удалённых и изменённых элементов (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), так что при необходимости можно тонко настраивать цвета и форматирование подсветок.

Ниже небольшой пример настройки опций для проверки только текста в режиме правок:

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

Получение изменений программно

Независимо от выбранного режима вывода (правки или подсветка), всегда можно получить структурированный список обнаруженных различий через общий 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[]
}

Это полезно, когда требуется пост‑обработка изменений в собственном workflow — например, построить кастомный 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 со official releases page. Для неограниченного тестирования запросите temporary license — кредитная карта не требуется.


Часто задаваемые вопросы

В: Нужно ли устанавливать Microsoft Word или Office на сервер?
О: Нет. GroupDocs.Comparison — автономная .NET‑библиотека; она читает и записывает DOCX‑файлы самостоятельно.

В: Можно ли сравнивать документы в других форматах, кроме Word?
О: Да — библиотека поддерживает PDF, таблицы Excel, презентации, обычные текстовые файлы и многое другое. Полный список см. в documentation.

В: Что происходит, если я не укажу лицензию?
О: Библиотека работает в режиме оценки. Выходные документы будут содержать водяной знак, а обрабатываться будут только первые несколько страниц. Temporary license снимает эти ограничения для тестирования.

В: Можно ли настроить цвета подсветки?
О: Цвета по умолчанию подходят для большинства сценариев. Для более продвинутой настройки проверьте свойство StyleSettings в CompareOptions.


Заключение

GroupDocs.Comparison for .NET предоставляет два удобных способа сравнения Word‑документов из кода. Режим правок вписывается напрямую в уже существующий процесс рецензирования вашей команды; режим подсветки предоставляет мгновённое визуальное резюме для тех, кто просто хочет увидеть изменения. Класс WordCompareOptions позволяет тонко настраивать вывод — от обнаружения стилей и указания автора до сравнения закладок и свойств документа.

Выберите режим, соответствующий вашему сценарию, либо генерируйте оба и позволяйте каждой аудитории выбрать предпочтительный вид.

Дополнительные ресурсы