Мы рады объявить о выпуске GroupDocs.Annotation for .NET 26.10, выпущенном в октябре 2026 года. Это релиз, ориентированный на безопасность: документы больше не загружают удалённые изображения, таблицы стилей или связанные файлы самостоятельно, а новые члены LoadOptions позволяют точно определить, что может быть загружено. Релиз также обновляет базовые движки документов, обновляет уязвимую зависимость и исправляет несколько проблем.

Что нового в этом релизе

Ключ Категория Краткое описание
ANNOTATIONNET-2663 ⚠️ Enhancement Внешние ресурсы больше не загружаются по умолчанию (новые элементы управления LoadOptions)
ANNOTATIONNET-2687 ✨ Enhancement Обновление базовых движков документов
ANNOTATIONNET-2672 🔒 Security Обновление System.Security.Cryptography.Pkcs до 8.0.2 (CVE-2026-84008 / CVE-2026-70162)
ANNOTATIONNET-2102 🔧 Fix Исправление FileTypeNotSupportedException при извлечении аннотаций из EML‑документов
ANNOTATIONNET-1903 🔧 Fix Исправление невозможности открыть документы, аннотированные старыми версиями, в .NET 8
ANNOTATIONNET-2689 🔧 Fix Исправление потери поворота страницы PDF на 90 градусов при сохранении

Внешние ресурсы больше не загружаются по умолчанию

Документ может ссылаться на ресурсы за пределами себя: <img src="https://..."> в HTML‑странице или теле письма, связанное изображение в документе Word, удалённая таблица стилей или внешняя ссылка на книгу Excel. До сих пор при открытии, предварительном просмотре или сохранении такого документа GroupDocs.Annotation запрашивал эти ресурсы из сети или файловой шаре.

На сервере, обрабатывающем недоверенные документы, это представляет риск server-side request forgery (SSRF): документ может заставить сервер обращаться к внутренним адресам, а путь UNC может раскрыть учётные данные Windows процесса.

Начиная с версии 26.10, внешние ресурсы по умолчанию пропускаются для документов обработки текста, HTML, электронной почты, презентаций и электронных таблиц:

  • Без запросов. Не выполняется ни сетевой, ни запрос к файловой шаре для ресурсов, на которые ссылается документ, в любой операции: Get, Add, Save, GeneratePreview и GetDocumentInfo.
  • Пустые заполнители. Пропущенное изображение отображается как прозрачный заполнитель, а оригинальная ссылка сохраняется в документе.
  • Встроенный контент по‑прежнему работает. Части cid: в письме, URI data: и встроенные изображения всегда загружаются.
  • Аннотации изображений не затронуты. ImageAnnotation.ImagePath по‑прежнему загружается из URL.

Это изменение поведения. Если ваши документы зависят от отображения удалённых изображений или таблиц стилей, разрешите их явно с помощью новых членов LoadOptions:

Член По умолчанию Описание
SkipExternalResources true Пропускать внешние ресурсы. Установите false, чтобы восстановить поведение до версии 26.10.
WhitelistedResources empty Имена хостов или абсолютные префиксы URI, которые загружаются даже когда ресурсы пропускаются.
ExternalResourceHandler null Вызывается для каждого внешнего ресурса; может разрешить его, пропустить или предоставить его содержимое.

Разрешать только доверенные хосты (рекомендовано):

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
}

Проверяйте, разрешайте или заменяйте каждый ресурс с помощью обработчика:

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

Обновлённые движки документов

Встроенные движки обработки текста, электронных таблиц, презентаций, PDF, диаграмм, электронной почты, изображений, CAD и графики обновлены до октябрьских выпусков 2026 года. Сгенерированные заново документы и предварительные просмотры страниц могут незначительно отличаться на уровне байтов или пикселей, оставаясь визуально эквивалентными.

Для проектов .NET 6 и .NET 8 пакеты времени выполнения теперь зависят от SkiaSharp 4.152.1. Если ваш проект напрямую ссылается на SkiaSharp 3.x, обновите его до 4.x.

Обновление безопасности

Движки документов включают System.Security.Cryptography.Pkcs версии 8.0.0 или 8.0.1, которые уязвимы к CVE-2026-84008 и CVE-2026-70162. GroupDocs.Annotation теперь ссылается на исправленную 8.0.2 для всех целевых платформ. Изменения кода не требуются.

Исправления

  • EML из потока. Сообщение EML, начинающееся с MIME-Version: 1.0, определялось как архив MHT, и открытие его из потока вызывало FileTypeNotSupportedException. Теперь такие сообщения открываются одинаково из потока и из файла, и файлы MHT теперь поддерживаются как документы электронной почты.
  • Старые документы в .NET 8. Документы, аннотированные версиями до 26.6, не открывались в .NET 8 с NotSupportedException. Теперь они открываются: устаревшие аннотации пропускаются с предупреждением в журнале, а новые аннотации можно добавить и сохранить. Связанная проблема с повторно сохранёнными презентациями (PPTX), у которых аннотации не читались, исправлена во всех платформах.
  • Поворот PDF на 90 градусов. Поворот страницы PDF с помощью Annotator.Rotation работал для 180 и 270 градусов, но поворот на 90 градусов терялся при сохранении. Теперь он сохраняется для любого угла:
using (Annotator annotator = new Annotator("input.pdf"))
{
    annotator.ProcessPages = 1;                 // the page to rotate
    annotator.Rotation = RotationDocument.on90; // previously ignored
    annotator.Save("output.pdf");
}

Изменения публичного API

В релизе добавлены следующие члены:

Никакие публичные члены не были удалены или изменены.

Как получить обновление

NuGet

Установите или обновите до GroupDocs.Annotation 26.10.0 с помощью NuGet. Пакет автоматически подбирает пакет времени выполнения для вашей целевой платформы (.NET Framework 4.6.2, .NET 6 или .NET 8):

dotnet add package GroupDocs.Annotation --version 26.10.0

Прямое скачивание

Скачайте релиз со страницы GroupDocs.Annotation for .NET 26.10.

Ресурсы