Мы рады объявить о выпуске GroupDocs.Comparison for .NET 26.5, доступном с мая 2026.
GroupDocs.Comparison версии 26.5 предоставляет улучшения точности рендеринга PDF, повышенную читаемость сравнения CSV и электронных таблиц, новые возможности API для обработки ревизий и метаданных изменений в таблицах, а также обновлённую модель упаковки NuGet с поддержкой нескольких целевых фреймворков.
Fixes and enhancements
- [Feature] Пакет NuGet с поддержкой нескольких фреймворков и TFM‑разделённые пакеты. (COMPARISONNET-4770)
- [Enhancement] Сравнение PDF: улучшена точность рендеринга абзацев в режиме Inline. (COMPARISONNET-4751)
- [Enhancement] Улучшены результаты сравнения PDF‑документов с таблицами. (COMPARISONNET-4763)
- [Bug] Исправлена ошибка ArgumentOutOfRangeException при сравнении PDF с оформленными таблицами. (COMPARISONNET-4762)
- [Feature] Поддержка необязательного освобождения переданного потока в RevisionHandler. (COMPARISONNET-4773)
- [Enhancement] Повышена читаемость результатов сравнения CSV с помощью текстовых маркеров. (COMPARISONNET-4769)
- [Feature] Расширен ChangeInfo свойствами таблицы. (COMPARISONNET-4767)
- [Bug] Метод Compare бросает исключение при выводе HTML. (COMPARISONNET-4764)
Major Features
Multi-framework NuGet packaging and TFM-split packages
GroupDocs.Comparison перешёл к более продвинутой модели доставки пакетов NuGet. Основной пакет теперь нацелен на net462;net6.0;net8.0;net10.0, заменяя предыдущие цели net462;netstandard2.1.
Кроме того, чтобы уменьшить размер загрузки, теперь публикуются отдельные пакеты NuGet для каждого фреймворка рядом с основным пакетом. При установке платформенно‑специфичного пакета загружаются только бинарные файлы, соответствующие целевому фреймворку пользователя — лишние сборки платформы не включаются.
| Package | Target framework |
|---|---|
GroupDocs.Comparison |
net462;net6.0;net8.0;net10.0 (все фреймворки) |
GroupDocs.Comparison.net462 |
.NET Framework 4.6.2 |
GroupDocs.Comparison.net6 |
.NET 6.0 |
GroupDocs.Comparison.net8 |
.NET 8.0 |
GroupDocs.Comparison.net10 |
.NET 10.0 |
Note: .NET Standard 2.1 больше не поддерживается как отдельная цель. Проекты, ранее использовавшие
netstandard2.1, должны перейти к одному из поддерживаемых выше TFMs.
Support optional disposal of passed stream in RevisionHandler
RevisionHandler теперь принимает параметр leaveOpen, который контролирует, будет ли базовый поток освобождён при освобождении обработчика. Когда leaveOpen установлен в true, поток остаётся открытым после освобождения RevisionHandler, позволяя вызывающему коду продолжать его использовать. Это полезно в сценариях, когда жизненный цикл потока управляется извне.
using FileStream revisionFileStream = new FileStream("source.docx", FileMode.Open, FileAccess.ReadWrite);
using (RevisionHandler revisionHandler = new RevisionHandler(revisionFileStream, leaveOpen: true))
{
List<RevisionInfo> revisionList = revisionHandler.GetRevisions();
foreach (var rev in revisionList)
{
if (rev.Type == RevisionType.Deletion)
rev.Action = RevisionAction.Accept;
}
ApplyRevisionOptions revisionChanges = new ApplyRevisionOptions { Changes = revisionList };
revisionHandler.ApplyRevisionChanges(resultPath, revisionChanges);
}
Extend ChangeInfo with Spreadsheet Properties
К ChangeInfo добавлены три новых свойства, раскрывающих метаданные, специфичные для электронных таблиц, для каждого обнаруженного изменения. Эти свойства заполняются при сравнении файлов Excel (.xlsx) и CSV (.csv) и позволяют точно определить местоположение изменения в сетке таблицы:
Row– индекс строки (ноль‑базовый) изменённой ячейки.Column– индекс столбца (ноль‑базовый) изменённой ячейки.ColumnHeader– текст заголовка столбца, содержащего изменённую ячейку (если доступен).
Ниже показан пример сравнения двух CSV‑файлов и сериализации списка изменений — включая новые свойства таблицы — в JSON:
string source = "source.csv";
string target = "target.csv";
string outFilePathJson = "result.json";
using (var comparer = new Comparer(source))
{
comparer.Add(target);
var doc = comparer.Compare();
var changes = doc.Changes;
var json = changes.Select(c => new
{
id = c.Id,
type = c.Type.ToString(),
componentType = c.ComponentType,
row = c.Row,
column = c.Column,
columnHeader = c.ColumnHeader,
sourceText = c.SourceText,
targetText = c.TargetText,
text = c.Text
});
File.WriteAllText(outFilePathJson,
JsonSerializer.Serialize(json, new JsonSerializerOptions { WriteIndented = true }));
}
Enhancements
Improve CSV comparison result readability with text markers
Вывод сравнения CSV теперь использует встроенные текстовые маркеры, делая вставленное и удалённое содержимое сразу видимым без необходимости просмотра бок о бок:
- Inserted текст оборачивается в круглые скобки — например,
(new value) - Deleted текст оборачивается в квадратные скобки — например,
[old value]
How to get the update
Вы можете получить последнюю версию из NuGet или скачать её напрямую с сайта GroupDocs.
NuGet
GroupDocs.Comparison for .NET 26.5
Direct download
Скачайте сборки как для .NET, так и для .NET Framework со страницы GroupDocs.Comparison for .NET 26.5.