Вступ
Незалежно від того, чи працюєте ви з контрактами, внутрішніми політиками, технічними специфікаціями чи маркетинговими текстами, схема однакова: ви швидко накопичуєте кілька версій .docx і в певний момент потрібно побачити, що саме змінилося між ними. Вбудований у Word діалог Compare підходить для випадкової ручної перевірки, проте він не дуже допомагає, коли порівняння стає частиною регулярного процесу або має бути автоматизоване на сервері.
GroupDocs.Comparison for .NET дозволяє виконувати таке порівняння з коду і отримувати результат у форматі, який потрібен вашим рецензентам. Бібліотека підтримує два режими виведення для Word‑документів:
- Режим ревізій — різниці записуються як розмітка Word‑ревізій (track‑changes). Рецензенти відкривають файл, бачать знайомі елементи управління Review → Accept / Reject і опрацьовують зміни по одній.
- Режим підсвічування — вставлений, видалений та змінений текст відображається кольоровими підсвічуваннями безпосередньо в основному тексті, тому відмінності помітні з першого погляду під час читання фінального тексту.
У цій статті ми розглянемо обидва підходи за допомогою робочих прикладів 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 |
|---|
Метод 1: Порівняння з ревізіями (track‑changes)
Коли використовувати: рецензенти мають приймати або відхиляти кожну зміну окремо в 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):
Що відбувається «під капотом»:
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);
}
Отриманий документ у режимі підсвічування:
Що відбувається «під капотом»:
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[]
}
Це корисно, коли потрібно подальша обробка змін у вашому процесі — наприклад, створити власний 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‑документів з коду. Режим ревізій безпосередньо інтегрується у ваш існуючий процес рецензування; режим підсвічування надає миттєве візуальне резюме для тих, кому достатньо просто побачити зміни. Клас WordCompareOptions дозволяє тонко налаштувати вихід — від виявлення стилю та імені автора до порівняння закладок і властивостей документа.
Обирайте режим, який підходить вашому сценарію, або генеруйте обидва і дайте аудиторії вибрати бажаний вигляд.