Ми раді оголосити про випуск GroupDocs.Comparison для .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.

Детальніше