GroupDocs.Comparison for .NET — это библиотека C#, позволяющая сравнивать документы и находить различия. Сравнивайте и объединяйте Microsoft Word, Excel, PowerPoint, OpenDocument, PDF, Text, HTML и многие другие документы, получайте список изменений между исходным и целевым документами, применяйте или отклоняйте изменения и сохраняйте результаты с помощью GroupDocs. .Сравнительный 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 используется для управления процессом создания предварительного просмотра — укажите желаемые номера страниц, формат изображения и т. д.

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

  • Создайте новый экземпляр класса Comparer и передайте путь к исходному документу в качестве параметра конструктора;
  • Добавить целевой документ(ы) к сравнению методом Добавить;
  • Свойства Source и Targets объекта Comparer позволяют получить доступ к исходным и целевым документам и предоставляют метод GeneratePreview;
  • Создайте объект 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. Пожалуйста, получите временную лицензию для тестирования библиотеки без каких-либо функциональных ограничений.

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