GroupDocs.Comparison for .NET — це бібліотека C#, яка дозволяє порівнювати документи та знаходити відмінності. Порівнюйте та об’єднуйте Microsoft Word, Excel, PowerPoint, OpenDocument, PDF, Text, HTML і багато інших документів, отримуйте список змін між вихідним і цільовим документами, застосовуйте або відхиляйте зміни та зберігайте результати за допомогою GroupDocs .Comparison API. На додаток до цього GroupDocs.Comparison може ідентифікувати зміни стилю та форматування, як-от жирний шрифт, курсив, підкреслення, закреслення, типи шрифтів тощо.

Алгоритми виявлення змін, які використовує GroupDocs.Comparison, дозволяють виявити відмінності в різних частинах і блоках документа:

  • Текстові блоки - абзаци, слова та символи;
  • Столи;
  • зображення;
  • фігури тощо

Ось прості кроки, щоб порівняти два текстові файли та показати відмінності:

  • Створення екземпляра об’єкта Comparer із шляхом або потоком вихідного документа;
  • Викличте метод Add і вкажіть шлях або потік цільового документа;
  • Викличте метод Compare.

Наступний фрагмент коду демонструє найпростіший випадок порівняння документів за допомогою кількох рядків коду.

Порівняти документи з локального файлу

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare(“result.docx”);
}

Порівняти документи з потоку

using (Comparer comparer = new Comparer(File.OpenRead(“source.docx”)))
{
    comparer.Add(File.OpenRead(“target.docx”));
    comparer.Compare(File.Create(“result.docx”));
}

Припустимо, у вас є два договори у форматі DOCX, укладені в різні роки. Якщо ви використовуєте наведений вище код для порівняння цих контрактів, ви отримаєте файл DOCX, у якому видалені елементи позначено червоним кольором, додані — синім, а змінені — зеленим, як показано нижче:

Прийняти або відхилити виявлені відмінності

GroupDocs.Comparison надає можливість застосувати або відхилити певні зміни між вихідним і цільовим документами та зберегти отриманий документ із вибраними змінами (або без них).

Нижче наведено кроки для застосування/відхилення змін до кінцевого документа.

  • Створення екземпляра об’єкта Comparer із шляхом або потоком вихідного документа;
  • Викличте метод Add і вкажіть шлях або потік цільового документа;
  • Виклик методу Compare;
  • Викликати метод GetChanges і отримати список виявлених змін;
  • Установіть для ComparisonAction необхідного об’єкта зміни значення ComparisonAction.Accept або ComparisonAction.Reject;
  • Викличте метод ApplyChanges і передайте йому колекцію змін.

У наведеному нижче прикладі коду показано, як приймати/відхиляти виявлені відмінності.

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges(File.Create(“result.docx”), new SaveOptions(), new ApplyChangeOptions() { Changes = changes });
}

Створення попереднього перегляду сторінок документа

GroupDocs.Comparison дозволяє генерувати попередній перегляд сторінки для вихідного, цільового та результуючого документа(ів) за допомогою методу GeneratePreview класу Document.

Клас PreviewOptions використовується для керування процесом генерації попереднього перегляду – вказуйте потрібні номери сторінок, формат зображення тощо.

Нижче наведено кроки для створення попереднього перегляду документа за допомогою GroupDocs.Comparison API:

  • Створіть новий екземпляр класу Comparer і передайте шлях вихідного документа як параметр конструктора;
  • Додайте цільовий документ(и) для порівняння за допомогою методу Add;
  • Джерело and Targets properties of Comparer object allows to access source and target documents and provides GeneratePreview method;
  • Створіть об’єкт PreviewOptions за допомогою:
    • делегат для кожного створення потоку сторінки (див. обробник події CreatePageStream);
    • формат попереднього перегляду зображення - PNG / JPG / BMP;
    • номери сторінок для обробки;
    • нестандартний розмір зображень попереднього перегляду (за потреби).
  • Викличте метод GeneratePreview документа Source і Targets і передайте йому PreviewOptions.

Отримайте попередній перегляд сторінки кінцевого документа

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare(“result.docx”);
    Document document = new Document(File.OpenRead(“result.docx”));
    PreviewOptions previewOptions = new PreviewOptions(pageNumber =>
    {
        var pagePath = Path.Combine(“C:\\”, $"result\_{pageNumber}.png");
        return File.Create(pagePath);
    });
    previewOptions.PreviewFormat = PreviewFormats.PNG;
    previewOptions.PageNumbers = new int[] { 1, 2 };
    document.GeneratePreview(previewOptions);
}

Порівняйте кілька документів

GroupDocs.Comparison дозволяє порівнювати більше двох документів. У наведеному нижче прикладі коду показано, як програмно порівнювати кілька документів.

using (Comparer comparer = new Comparer(“source.docx”)
{
    comparer.Add(“target1.docx”);
    comparer.Add(“target2.docx”);
    comparer.Add(“target3.docx”);
    comparer.Compare(“result.docx”);
}

монтаж

NuGet — це найпростіший спосіб завантажити та встановити GroupDocs.Comparison for .NET. Будь ласка, отримайте тимчасову ліцензію, щоб протестувати бібліотеку без будь-яких функціональних обмежень.

Перегляньте документацію, щоб дізнатися більше про бібліотеку. Ми також пропонуємо безкоштовну технічну підтримку, тому, будь ласка, зв’яжіться з нами – ми будемо раді допомогти.