Мы рады объявить о выпуске GroupDocs.Comparison for .NET 26.5, доступном с мая 2026 года.
Версия GroupDocs.Comparison 26.5 предоставляет улучшения точности рендеринга PDF, повышенную читаемость сравнения CSV и электронных таблиц, новые возможности API для работы с ревизиями и метаданными изменений в таблицах, а также обновлённую модель упаковки NuGet с поддержкой нескольких целевых платформ.
Исправления и улучшения
- [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)
Основные возможности
Пакет NuGet с поддержкой нескольких платформ и раздельные пакеты по TFM
GroupDocs.Comparison перешёл на более продвинутую модель доставки пакетов NuGet. Основной пакет теперь ориентирован на net462;net6.0;net8.0;net10.0, заменяя прежние цели net462;netstandard2.1.
Кроме того, чтобы уменьшить размер загрузки, рядом с основным пакетом публикуются отдельные пакеты для каждой платформы. При установке платформенно‑специфичного пакета загружаются только бинарные файлы, соответствующие целевой платформе пользователя — лишние сборки не включаются.
| Пакет | Целевая платформа |
|---|---|
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 |
Примечание: .NET Standard 2.1 больше не поддерживается как отдельная цель. Проекты, ранее использовавшие
netstandard2.1, должны перейти на одну из поддерживаемых выше TFMs.
Поддержка необязательного освобождения переданного потока в 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);
}
Расширение ChangeInfo свойствами таблицы
К 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 }));
}
Улучшения
Повышение читаемости результатов сравнения CSV с помощью текстовых маркеров
Вывод сравнения CSV теперь использует встроенные текстовые маркеры, позволяющие сразу увидеть вставленное и удалённое содержимое без необходимости просматривать их рядом:
- Вставленный текст заключён в круглые скобки — например,
(new value) - Удалённый текст заключён в квадратные скобки — например,
[old value]
Как получить обновление
Получить последнюю версию можно через NuGet или загрузив её напрямую с сайта GroupDocs.
NuGet
GroupDocs.Comparison for .NET 26.5
Прямая загрузка
Скачайте сборки для .NET и .NET Framework со страницы GroupDocs.Comparison for .NET 26.5.