Siamo lieti di annunciare GroupDocs.Annotation for .NET 26.10, rilasciato a ottobre 2026. Questa è una versione incentrata sulla sicurezza: i documenti non caricano più immagini remote, fogli di stile o file collegati autonomamente, e i nuovi membri di LoadOptions ti consentono di decidere esattamente cosa può essere caricato. La versione aggiorna anche i motori di documento sottostanti, aggiorna una dipendenza vulnerabile e risolve diversi problemi.

Novità di questa versione

Chiave Categoria Riepilogo
ANNOTATIONNET-2663 ⚠️ Miglioramento Le risorse esterne non vengono più caricate per impostazione predefinita (nuovi controlli LoadOptions)
ANNOTATIONNET-2687 ✨ Miglioramento Aggiorna i motori di documento sottostanti
ANNOTATIONNET-2672 🔒 Sicurezza Aggiorna System.Security.Cryptography.Pkcs a 8.0.2 (CVE-2026-84008 / CVE-2026-70162)
ANNOTATIONNET-2102 🔧 Correzione Correggi FileTypeNotSupportedException durante l’estrazione delle annotazioni da documenti EML
ANNOTATIONNET-1903 🔧 Correzione Correggi i documenti annotati da versioni precedenti che non si aprono su .NET 8
ANNOTATIONNET-2689 🔧 Correzione Correggi la perdita della rotazione di pagina PDF di 90 gradi al salvataggio

Le risorse esterne non vengono più caricate per impostazione predefinita

Un documento può fare riferimento a risorse esterne: un <img src="https://..."> in una pagina HTML o nel corpo di un’e‑mail, un’immagine collegata in un documento Word, un foglio di stile remoto o un collegamento a una cartella di lavoro esterna. Fino a ora, aprire, visualizzare in anteprima o salvare tale documento faceva sì che GroupDocs.Annotation richiedesse tali risorse dalla rete o da una condivisione di file.

Su un server che elabora documenti non attendibili, questo rappresenta un rischio di server‑side request forgery (SSRF): un documento potrebbe far chiamare al server indirizzi interni, e un percorso UNC potrebbe far trapelare le credenziali Windows del processo.

A partire da 26.10, le risorse esterne vengono ignorate per impostazione predefinita per i documenti di elaborazione testi, HTML, e‑mail, presentazione e foglio di calcolo:

  • Nessuna richiesta. Non viene effettuata alcuna richiesta di rete o di condivisione file per le risorse a cui il documento fa riferimento, in nessuna operazione: Get, Add, Save, GeneratePreview e GetDocumentInfo.
  • Segnaposti vuoti. Un’immagine ignorata viene renderizzata come un segnaposto trasparente, e il collegamento originale viene mantenuto nel documento salvato.
  • Il contenuto incorporato funziona ancora. Le parti cid: di un’e‑mail, gli URI data: e le immagini incorporate vengono sempre caricate.
  • Le annotazioni immagine non sono interessate. ImageAnnotation.ImagePath viene ancora caricato da un URL.

Questo è un cambiamento di comportamento. Se i tuoi documenti dipendono dal rendering di immagini o fogli di stile remoti, consentili esplicitamente con i nuovi membri di LoadOptions:

Membro Predefinito Descrizione
SkipExternalResources true Ignora le risorse esterne. Impostalo su false per ripristinare il comportamento pre‑26.10.
WhitelistedResources empty Nomi host o prefissi URI assoluti che vengono caricati anche quando le risorse sono ignorate.
ExternalResourceHandler null Chiamato per ogni risorsa esterna; può consentirla, ignorarla o fornire il suo contenuto.

Consenti solo host attendibili (raccomandato):

LoadOptions loadOptions = new LoadOptions
{
    // SkipExternalResources rimane true (il valore predefinito)
    WhitelistedResources = { "cdn.example.com", "https://intranet.example.com/images/" }
};

using (Annotator annotator = new Annotator("input.html", loadOptions))
{
    annotator.Save("output.html"); // vengono caricate solo le immagini dalle due posizioni nella whitelist
}

Ispeziona, consenti o sostituisci ogni risorsa con un gestore:

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

        // fornisce una copia locale invece di andare in rete
        if (args.Uri == "https://example.com/logo.png")
            args.Data = File.ReadAllBytes("logo.png");
    }
}

Motori di documento aggiornati

I motori integrati per l’elaborazione testi, foglio di calcolo, presentazione, PDF, diagramma, e‑mail, imaging, CAD e rendering grafico sono stati aggiornati alle versioni di ottobre 2026. I documenti rigenerati e le anteprime di pagina possono differire leggermente a livello di byte o pixel pur rimanendo visivamente equivalenti.

Per i progetti .NET 6 e .NET 8, i pacchetti runtime ora dipendono da SkiaSharp 4.152.1. Se il tuo progetto fa riferimento direttamente a SkiaSharp 3.x, aggiornalo a 4.x.

Aggiornamento di sicurezza

I motori di documento includono System.Security.Cryptography.Pkcs 8.0.0 o 8.0.1, che sono interessati da CVE-2026-84008 e CVE-2026-70162. GroupDocs.Annotation ora fa riferimento al 8.0.2 corretto su tutti i framework di destinazione. Non sono necessarie modifiche al codice.

Correzioni

  • EML da uno stream. Un messaggio EML che iniziava con MIME-Version: 1.0 veniva rilevato come archivio MHT, e l’apertura da uno stream generava FileTypeNotSupportedException. Ora tali messaggi si aprono allo stesso modo da uno stream e da un file, e i file MHT sono ora supportati come documenti e‑mail.
  • Documenti più vecchi su .NET 8. I documenti annotati da versioni precedenti a 26.6 non si aprivano su .NET 8 con NotSupportedException. Ora si aprono: le annotazioni legacy vengono ignorate con un avviso nel log, e le nuove annotazioni possono essere aggiunte e salvate. Un problema correlato con presentazioni risalvate (PPTX) le cui annotazioni non potevano essere rilette è stato risolto su tutti i framework.
  • Rotazione PDF di 90 gradi. Ruotare una pagina PDF con Annotator.Rotation funzionava per 180 e 270 gradi, ma una rotazione di 90 gradi veniva persa al salvataggio. Ora viene mantenuta per ogni angolo:
using (Annotator annotator = new Annotator("input.pdf"))
{
    annotator.ProcessPages = 1;                 // la pagina da ruotare
    annotator.Rotation = RotationDocument.on90; // precedentemente ignorata
    annotator.Save("output.pdf");
}

Modifiche all’API pubblica

La versione aggiunge i seguenti membri:

Nessun membro pubblico è stato rimosso o modificato.

Come ottenere l’aggiornamento

NuGet

Installa o aggiorna a GroupDocs.Annotation 26.10.0 usando NuGet. Il pacchetto risolve automaticamente il pacchetto runtime per il tuo framework di destinazione (.NET Framework 4.6.2, .NET 6 o .NET 8):

dotnet add package GroupDocs.Annotation --version 26.10.0

Download diretto

Scarica la versione dalla pagina GroupDocs.Annotation for .NET 26.10.

Risorse