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,GeneratePreviewetGetDocumentInfo. - 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 URIdata:et les images intégrées sont toujours chargées. - Les annotations d’image ne sont pas affectées.
ImageAnnotation.ImagePathest 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éclenchaitFileTypeNotSupportedException. 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.Rotationfonctionnait 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 :
LoadOptions.SkipExternalResourcesLoadOptions.WhitelistedResourcesLoadOptions.ExternalResourceHandlerExternalResourceHandlerclassExternalResourceLoadingArgsclass
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.