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. Пожалуйста, получите временную лицензию для тестирования библиотеки без каких-либо функциональных ограничений.
Пожалуйста, ознакомьтесь с документацией, чтобы узнать больше о библиотеке. Мы также предлагаем бесплатную техническую поддержку, поэтому, пожалуйста, свяжитесь с нами — мы будем рады помочь.