Nous sommes heureux d’annoncer GroupDocs.Annotation for .NET 26.10, publié en octobre 2026. Il s’agit d’une version axée sur la sécurité : les documents n’extraient plus automatiquement d’images distantes, de feuilles de style ou de fichiers liés, et les nouveaux membres LoadOptions vous permettent de décider exactement ce qui peut être chargé. Cette version met également à jour les moteurs de documents sous‑jacent, met à jour une dépendance vulnérable et corrige plusieurs problèmes.

Nouveautés de cette version

Clé Catégorie Résumé
ANNOTATIONNET-2663 ⚠️ Amélioration Les ressources externes ne sont plus chargées par défaut (nouveaux contrôles LoadOptions)
ANNOTATIONNET-2687 ✨ Amélioration Mettre à jour les moteurs de documents sous‑jacent
ANNOTATIONNET-2672 🔒 Sécurité Mettre à jour System.Security.Cryptography.Pkcs vers 8.0.2 (CVE-2026-84008 / CVE-2026-70162)
ANNOTATIONNET-2102 🔧 Correction Corriger FileTypeNotSupportedException lors de l’extraction des annotations à partir de documents EML
ANNOTATIONNET-1903 🔧 Correction Corriger les documents annotés par des versions antérieures qui ne s’ouvrent pas sous .NET 8
ANNOTATIONNET-2689 🔧 Correction Corriger la perte de rotation de page PDF de 90 degrés lors de l’enregistrement

Les ressources externes ne sont plus chargées par défaut

Un document peut référencer des ressources externes : une balise <img src="https://..."> dans une page HTML ou le corps d’un e‑mail, une image liée dans un document Word, une feuille de style distante ou un lien vers un classeur externe. Jusqu’à présent, l’ouverture, l’aperçu ou l’enregistrement d’un tel document faisait que GroupDocs.Annotation demandait ces ressources depuis le réseau ou un partage de fichiers.

Sur un serveur qui traite des documents non fiables, cela représente un risque de falsification de requête côté serveur (SSRF) : un document pourrait faire appeler le serveur à des adresses internes, et un chemin UNC pourrait divulguer les informations d’identification Windows du processus.

À partir de la version 26.10, les ressources externes sont ignorées par défaut pour les documents de traitement de texte, HTML, e‑mail, présentation et feuille de calcul :

  • Aucune requête. Aucune requête réseau ou partage de fichiers n’est effectuée pour les ressources référencées par le document, dans aucune opération : Get, Add, Save, GeneratePreview et GetDocumentInfo.
  • Espaces réservés vides. Une image ignorée est rendue comme un espace réservé transparent, et le lien original est conservé dans le document enregistré.
  • Le contenu intégré fonctionne toujours. Les parties cid: d’un e‑mail, les URI data: et les images intégrées sont toujours chargées.
  • Les annotations d’image ne sont pas affectées. ImageAnnotation.ImagePath est toujours chargé depuis une URL.

Il s’agit d’un changement de comportement. Si vos documents dépendent du rendu d’images ou de feuilles de style distantes, autorisez‑les explicitement avec les nouveaux membres LoadOptions :

Membre Valeur par défaut Description
SkipExternalResources true Ignorer les ressources externes. Réglez‑le sur false pour restaurer le comportement antérieur à la version 26.10.
WhitelistedResources empty Noms d’hôte ou préfixes d’URI absolus qui sont chargés même lorsque les ressources sont ignorées.
ExternalResourceHandler null Appelé pour chaque ressource externe ; il peut l’autoriser, l’ignorer ou fournir son contenu.

Autoriser uniquement les hôtes de confiance (recommandé) :

LoadOptions loadOptions = new LoadOptions
{
    // SkipExternalResources stays true (the default)
    WhitelistedResources = { "cdn.example.com", "https://intranet.example.com/images/" }
};

using (Annotator annotator = new Annotator("input.html", loadOptions))
{
    annotator.Save("output.html"); // only images from the two whitelisted locations are loaded
}

Inspectez, autorisez ou remplacez chaque ressource avec un gestionnaire :

class AuditingResourceHandler : ExternalResourceHandler
{
    public override void OnLoading(ExternalResourceLoadingArgs args)
    {
        Console.WriteLine($"{args.Uri}: {(args.Skipped ? "skipped" : "loaded")}");

        // serve a local copy instead of going to the network
        if (args.Uri == "https://example.com/logo.png")
            args.Data = File.ReadAllBytes("logo.png");
    }
}

Moteurs de documents mis à jour

Les moteurs intégrés de traitement de texte, feuille de calcul, présentation, PDF, diagramme, e‑mail, imagerie, CAO et rendu graphique sont mis à jour vers leurs versions d’octobre 2026. Les documents régénérés et les aperçus de pages peuvent différer légèrement au niveau des octets ou des pixels tout en restant visuellement équivalents.

Pour les projets .NET 6 et .NET 8, les packages d’exécution dépendent désormais de SkiaSharp 4.152.1. Si votre projet référence directement SkiaSharp 3.x, mettez‑le à jour vers la version 4.x.

Mise à jour de sécurité

Les moteurs de documents intègrent System.Security.Cryptography.Pkcs 8.0.0 ou 8.0.1, qui sont affectés par CVE-2026-84008 et CVE-2026-70162. GroupDocs.Annotation référence désormais le correctif 8.0.2 sur chaque framework cible. Aucun changement de code n’est requis.

Corrections

  • EML depuis un flux. Un message EML commençant par MIME-Version: 1.0 était détecté comme une archive MHT, et son ouverture depuis un flux déclenchait FileTypeNotSupportedException. Ces messages s’ouvrent désormais de la même façon depuis un flux et depuis un fichier, et les fichiers MHT sont maintenant pris en charge comme documents e‑mail.
  • Documents anciens sous .NET 8. Les documents annotés par des versions antérieures à 26.6 ne s’ouvraient pas sous .NET 8 avec NotSupportedException. Ils s’ouvrent maintenant : les annotations héritées sont ignorées avec un avertissement dans le journal, et de nouvelles annotations peuvent être ajoutées et enregistrées. Un problème connexe avec les présentations réenregistrées (PPTX) dont les annotations ne pouvaient pas être relues a été corrigé sur tous les frameworks.
  • Rotation PDF de 90 degrés. La rotation d’une page PDF avec Annotator.Rotation fonctionnait pour 180 et 270 degrés, mais une rotation de 90 degrés était perdue lors de l’enregistrement. Elle est maintenant conservée pour chaque angle :
using (Annotator annotator = new Annotator("input.pdf"))
{
    annotator.ProcessPages = 1;                 // the page to rotate
    annotator.Rotation = RotationDocument.on90; // previously ignored
    annotator.Save("output.pdf");
}

Modifications de l’API publique

Cette version ajoute les membres suivants :

Aucun membre public n’a été supprimé ou modifié.

Comment obtenir la mise à jour

NuGet

Installez ou mettez à jour vers GroupDocs.Annotation 26.10.0 en utilisant NuGet. Le package résout automatiquement le package d’exécution pour votre framework cible (.NET Framework 4.6.2, .NET 6 ou .NET 8) :

dotnet add package GroupDocs.Annotation --version 26.10.0

Téléchargement direct

Téléchargez la version depuis la page GroupDocs.Annotation for .NET 26.10.

Ressources