Ми раді оголосити про GroupDocs.Annotation for .NET 26.10, випущений у жовтні 2026 року. Це випуск, орієнтований на безпеку: документи більше не завантажують віддалені зображення, таблиці стилів або пов’язані файли самостійно, а нові члени LoadOptions дозволяють точно визначити, що може бути завантажено. У випуск також оновлює базові движки документів, оновлює вразливу залежність і виправляє кілька проблем.
Що нового у цьому випуску
| Ключ | Категорія | Коротко |
|---|---|---|
| ANNOTATIONNET-2663 | ⚠️ Покращення | Зовнішні ресурси більше не завантажуються за замовчуванням (нові контролі LoadOptions) |
| ANNOTATIONNET-2687 | ✨ Покращення | Оновити базові движки документів |
| ANNOTATIONNET-2672 | 🔒 Безпека | Оновити System.Security.Cryptography.Pkcs до 8.0.2 (CVE-2026-84008 / CVE-2026-70162) |
| ANNOTATIONNET-2102 | 🔧 Виправлення | Виправити FileTypeNotSupportedException під час вилучення анотацій з EML документів |
| ANNOTATIONNET-1903 | 🔧 Виправлення | Виправити документи, анотовані старими версіями, які не відкривалися у .NET 8 |
| ANNOTATIONNET-2689 | 🔧 Виправлення | Виправити втрату обертання сторінки PDF на 90 градусів при збереженні |
Зовнішні ресурси більше не завантажуються за замовчуванням
Документ може посилатися на ресурси поза межами себе: <img src="https://..."> у HTML‑сторінці або в тілі електронного листа, пов’язане зображення у документі Word, віддалена таблиця стилів або зовнішнє посилання на книгу. До цього часу відкриття, попередній перегляд або збереження такого документа змушували GroupDocs.Annotation запитувати ці ресурси з мережі або файлового сховища.
На сервері, який обробляє недовірені документи, це створює ризик server-side request forgery (SSRF): документ може змусити сервер викликати внутрішні адреси, а шлях UNC може витікати облікові дані Windows процесу.
Починаючи з 26.10, зовнішні ресурси пропускаються за замовчуванням для документів обробки тексту, HTML, електронної пошти, презентацій та електронних таблиць:
- Без запитів. Не здійснюється жоден запит до мережі або файлового сховища для ресурсів, на які посилається документ, у будь‑якій операції:
Get,Add,Save,GeneratePreviewтаGetDocumentInfo. - Порожні заповнювачі. Пропущене зображення відображається як прозорий заповнювач, а оригінальне посилання зберігається у збереженому документі.
- Вбудований вміст все ще працює. Частини
cid:електронного листа, URIdata:та вбудовані зображення завжди завантажуються. - Анотації зображень не постраждають.
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
У випуску додано наступні члени:
LoadOptions.SkipExternalResourcesLoadOptions.WhitelistedResourcesLoadOptions.ExternalResourceHandlerExternalResourceHandlerкласExternalResourceLoadingArgsклас
Жодних публічних членів не було видалено або змінено.
Як отримати оновлення
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 .