Nous sommes heureux d’annoncer la sortie de GroupDocs.Comparison for .NET 26.5, disponible depuis mai 2026.
GroupDocs.Comparison version 26.5 apporte des améliorations de la précision du rendu PDF, une meilleure lisibilité des comparaisons CSV et de feuilles de calcul, de nouvelles capacités d’API pour la gestion des révisions et les métadonnées des modifications de feuilles de calcul, ainsi qu’un modèle d’emballage NuGet mis à jour avec prise en charge multi‑cadre.

Corrections et améliorations

  • [Feature] Emballage NuGet multi‑cadre et paquets séparés par TFM. (COMPARISONNET-4770)
  • [Enhancement] Comparaison PDF : améliorer la précision du rendu des paragraphes en mode Inline. (COMPARISONNET-4751)
  • [Enhancement] Améliorer les résultats de comparaison pour les documents PDF contenant des tableaux. (COMPARISONNET-4763)
  • [Bug] Corriger ArgumentOutOfRangeException lors de la comparaison de PDF avec des tableaux stylisés. (COMPARISONNET-4762)
  • [Feature] Prise en charge de la libération optionnelle du flux transmis dans RevisionHandler. (COMPARISONNET-4773)
  • [Enhancement] Améliorer la lisibilité du résultat de comparaison CSV avec des marqueurs de texte. (COMPARISONNET-4769)
  • [Feature] Étendre ChangeInfo avec des propriétés de feuille de calcul. (COMPARISONNET-4767)
  • [Bug] La méthode Compare lève une exception pour la sortie HTML. (COMPARISONNET-4764)

Fonctionnalités majeures

Emballage NuGet multi‑cadre et paquets séparés par TFM

GroupDocs.Comparison est passé à un modèle de distribution NuGet plus avancé. Le paquet principal cible désormais net462;net6.0;net8.0;net10.0, remplaçant les cibles précédentes net462;netstandard2.1.

De plus, afin de réduire la taille du téléchargement, des paquets NuGet dédiés à chaque cadre sont maintenant publiés en parallèle du paquet principal. Lors de l’installation du paquet spécifique à la plateforme, seuls les binaires correspondant au cadre cible de l’utilisateur sont téléchargés — aucune assembly de plateforme inutilisée n’est incluse.

Package Cadre cible
GroupDocs.Comparison net462;net6.0;net8.0;net10.0 (tous les cadres)
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 n’est plus pris en charge en tant que cible dédiée. Les projets qui dépendaient auparavant de netstandard2.1 doivent migrer vers l’un des TFMs pris en charge listés ci‑dessus.

Prise en charge de la libération optionnelle du flux transmis dans RevisionHandler

RevisionHandler accepte désormais un paramètre leaveOpen qui contrôle si le flux sous‑jacent est libéré lorsque le gestionnaire est libéré. Lorsque leaveOpen est défini sur true, le flux reste ouvert après la libération du RevisionHandler, permettant à l’appelant de continuer à l’utiliser. Cela est utile dans les scénarios où le cycle de vie du flux est géré à l’extérieur.

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);
}

Étendre ChangeInfo avec des propriétés de feuille de calcul

Trois nouvelles propriétés ont été ajoutées à ChangeInfo pour exposer les métadonnées spécifiques aux feuilles de calcul pour chaque modification détectée. Ces propriétés sont renseignées lors de la comparaison de fichiers Excel (.xlsx) et CSV (.csv) et vous permettent de localiser précisément chaque modification dans la grille de la feuille de calcul :

  • Row – indice de ligne (base zéro) de la cellule modifiée.
  • Column – indice de colonne (base zéro) de la cellule modifiée.
  • ColumnHeader – texte de l’en‑tête de la colonne contenant la cellule modifiée (si disponible).

L’exemple ci‑dessous montre comment comparer deux fichiers CSV et sérialiser la liste des modifications — incluant les nouvelles propriétés de feuille de calcul — en 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