We’re pleased to announce GroupDocs.Annotation for .NET 26.10, released in October 2026. This is a security‑focused release: documents no longer pull in remote images, style sheets or linked files on their own, and new LoadOptions members let you decide exactly what may be loaded. The release also upgrades the underlying document engines, updates a vulnerable dependency and fixes several issues.
Co nowego w tej wersji
| Klucz | Kategoria | Podsumowanie |
|---|---|---|
| ANNOTATIONNET-2663 | ⚠️ Ulepszenie | Zasoby zewnętrzne nie są już ładowane domyślnie (nowe kontrolki LoadOptions) |
| ANNOTATIONNET-2687 | ✨ Ulepszenie | Zaktualizuj podstawowe silniki dokumentów |
| ANNOTATIONNET-2672 | 🔒 Bezpieczeństwo | Zaktualizuj System.Security.Cryptography.Pkcs do 8.0.2 (CVE-2026-84008 / CVE-2026-70162) |
| ANNOTATIONNET-2102 | 🔧 Poprawka | Napraw FileTypeNotSupportedException przy wyodrębnianiu adnotacji z dokumentów EML |
| ANNOTATIONNET-1903 | 🔧 Poprawka | Napraw dokumenty adnotowane w starszych wersjach, które nie otwierały się w .NET 8 |
| ANNOTATIONNET-2689 | 🔧 Poprawka | Napraw utratę obrotu strony PDF o 90 stopni przy zapisie |
Zasoby zewnętrzne nie są już ładowane domyślnie
Dokument może odwoływać się do zasobów spoza siebie: <img src="https://..."> w stronie HTML lub treści e‑maila, połączony obraz w dokumencie Word, zdalny arkusz stylów lub zewnętrzny odnośnik do skoroszytu. Do tej pory otwieranie, podgląd lub zapisywanie takiego dokumentu powodowało, że GroupDocs.Annotation żądał tych zasobów z sieci lub udziału plikowego.
Na serwerze przetwarzającym niezaufane dokumenty stanowi to ryzyko server‑side request forgery (SSRF): dokument mógłby spowodować wywołanie wewnętrznych adresów, a ścieżka UNC mogłaby wycieknąć poświadczenia Windows procesu.
Od wersji 26.10 zasoby zewnętrzne są pomijane domyślnie dla dokumentów Word, HTML, e‑mail, prezentacji i arkuszy kalkulacyjnych:
- Brak żądań. Żadne żądanie sieciowe ani do udziału plikowego nie jest wykonywane dla zasobów odwoływanych w dokumencie, w żadnej operacji:
Get,Add,Save,GeneratePreviewiGetDocumentInfo. - Puste symbole zastępcze. Pomięty obraz jest renderowany jako przezroczysty placeholder, a oryginalny odnośnik pozostaje w zapisanym dokumencie.
- Zawartość osadzona nadal działa. Części
cid:w e‑mailu, URIdata:oraz osadzone obrazy są zawsze ładowane. - Adnotacje obrazów nie są dotknięte.
ImageAnnotation.ImagePathnadal jest ładowany z URL.
To zmiana zachowania. Jeśli Twoje dokumenty polegają na zdalnych obrazach lub arkuszach stylów, zezwól na nie explicite przy użyciu nowych członków LoadOptions:
| Członek | Domyślnie | Opis |
|---|---|---|
SkipExternalResources |
true |
Pomija zasoby zewnętrzne. Ustaw na false, aby przywrócić zachowanie sprzed 26.10. |
WhitelistedResources |
empty | Nazwy hostów lub absolutne prefiksy URI, które są ładowane nawet przy pomijaniu zasobów. |
ExternalResourceHandler |
null |
Wywoływany dla każdego zasobu zewnętrznego; może go zezwolić, pominąć lub dostarczyć jego zawartość. |
Zezwalaj tylko na zaufane hosty (zalecane):
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
}
Sprawdź, zezwól lub zamień każdy zasób przy użyciu obsługi:
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");
}
}
Zaktualizowane silniki dokumentów
Wbudowane silniki przetwarzania tekstu, arkuszy, prezentacji, PDF, diagramów, e‑mail, obrazów, CAD i renderowania grafiki zostały zaktualizowane do wersji październik 2026. Ponowne generowanie dokumentów i podglądów stron może nieznacznie różnić się na poziomie bajtów lub pikseli, pozostając wizualnie równoważnym.
Dla projektów .NET 6 i .NET 8 pakiety uruchomieniowe teraz zależą od SkiaSharp 4.152.1. Jeśli Twój projekt odwołuje się bezpośrednio do SkiaSharp 3.x, zaktualizuj go do 4.x.
Aktualizacja zabezpieczeń
Silniki dokumentów wprowadzają System.Security.Cryptography.Pkcs w wersji 8.0.0 lub 8.0.1, które są podatne na CVE-2026-84008 i CVE-2026-70162. GroupDocs.Annotation teraz odwołuje się do poprawionej 8.0.2 na wszystkich docelowych platformach. Nie wymaga to zmian w kodzie.
Poprawki
- EML ze strumienia. Wiadomość EML zaczynająca się od
MIME-Version: 1.0była wykrywana jako archiwum MHT, a otwarcie jej ze strumienia powodowałoFileTypeNotSupportedException. Takie wiadomości otwierają się teraz tak samo ze strumienia, jak i z pliku, a pliki MHT są teraz obsługiwane jako dokumenty e‑mail. - Starsze dokumenty w .NET 8. Dokumenty adnotowane w wersjach przed 26.6 nie otwierały się w .NET 8 z powodu
NotSupportedException. Teraz otwierają się: starsze adnotacje są pomijane z ostrzeżeniem w logu, a nowe adnotacje można dodawać i zapisywać. Powiązany problem z ponownie zapisywanymi prezentacjami (PPTX), których adnotacje nie mogły być odczytane, został naprawiony we wszystkich frameworkach. - Obrót PDF o 90 stopni. Obracanie strony PDF przy użyciu
Annotator.Rotationdziałało dla 180 i 270 stopni, ale obrót o 90 stopni był tracony przy zapisie. Teraz jest zachowywany dla każdego kąta:
using (Annotator annotator = new Annotator("input.pdf"))
{
annotator.ProcessPages = 1; // the page to rotate
annotator.Rotation = RotationDocument.on90; // previously ignored
annotator.Save("output.pdf");
}
Zmiany w publicznym API
W wydaniu dodano następujące członki:
LoadOptions.SkipExternalResourcesLoadOptions.WhitelistedResourcesLoadOptions.ExternalResourceHandler- Klasa
ExternalResourceHandler - Klasa
ExternalResourceLoadingArgs
Nie usunięto ani nie zmieniono żadnych publicznych członków.
Jak uzyskać aktualizację
NuGet
Zainstaluj lub zaktualizuj do GroupDocs.Annotation 26.10.0 przy użyciu NuGet. Pakiet automatycznie rozwiązuje pakiet uruchomieniowy dla Twojej docelowej platformy (.NET Framework 4.6.2, .NET 6 lub .NET 8):
dotnet add package GroupDocs.Annotation --version 26.10.0
Bezpośrednie pobranie
Pobierz wydanie ze strony GroupDocs.Annotation for .NET 26.10.