Nos complace anunciar GroupDocs.Annotation for .NET 26.10, lanzado en octubre de 2026. Esta es una versión centrada en la seguridad: los documentos ya no cargan imágenes remotas, hojas de estilo o archivos vinculados por sí mismos, y los nuevos miembros de LoadOptions le permiten decidir exactamente qué se puede cargar. La versión también actualiza los motores de documentos subyacentes, actualiza una dependencia vulnerable y corrige varios problemas.
Qué hay de nuevo en esta versión
| Clave | Categoría | Resumen |
|---|---|---|
| ANNOTATIONNET-2663 | ⚠️ Mejora | Los recursos externos ya no se cargan por defecto (nuevos controles LoadOptions) |
| ANNOTATIONNET-2687 | ✨ Mejora | Actualizar los motores de documentos subyacentes |
| ANNOTATIONNET-2672 | 🔒 Seguridad | Actualizar System.Security.Cryptography.Pkcs a 8.0.2 (CVE-2026-84008 / CVE-2026-70162) |
| ANNOTATIONNET-2102 | 🔧 Corrección | Corregir FileTypeNotSupportedException al extraer anotaciones de documentos EML |
| ANNOTATIONNET-1903 | 🔧 Corrección | Corregir documentos anotados por versiones anteriores que fallan al abrirse en .NET 8 |
| ANNOTATIONNET-2689 | 🔧 Corrección | Corregir la pérdida de la rotación de página PDF de 90 grados al guardar |
Los recursos externos ya no se cargan por defecto
Un documento puede referenciar recursos externos: un <img src="https://..."> en una página HTML o en el cuerpo de un correo electrónico, una imagen vinculada en un documento Word, una hoja de estilo remota o un enlace a un libro de trabajo externo. Hasta ahora, abrir, previsualizar o guardar dicho documento hacía que GroupDocs.Annotation solicitara esos recursos desde la red o un recurso compartido.
En un servidor que procesa documentos no confiables, esto representa un riesgo de falsificación de solicitud del lado del servidor (SSRF): un documento podría hacer que el servidor llame a direcciones internas, y una ruta UNC podría filtrar las credenciales de Windows del proceso.
A partir de la 26.10, los recursos externos se omiten por defecto para documentos de procesamiento de texto, HTML, correo electrónico, presentaciones y hojas de cálculo:
- Sin solicitudes. No se realiza ninguna solicitud de red o de recurso compartido para los recursos referenciados por el documento, en ninguna operación:
Get,Add,Save,GeneratePreviewyGetDocumentInfo. - Marcadores de posición vacíos. Una imagen omitida se renderiza como un marcador de posición transparente, y el enlace original se conserva en el documento guardado.
- El contenido incrustado sigue funcionando. Las partes
cid:de un correo electrónico, los URIdata:y las imágenes incrustadas siempre se cargan. - Las anotaciones de imagen no se ven afectadas.
ImageAnnotation.ImagePathsigue cargándose desde una URL.
Esto es un cambio de comportamiento. Si sus documentos dependen de que se rendericen imágenes o hojas de estilo remotas, permítalas explícitamente con los nuevos miembros de LoadOptions:
| Miembro | Valor predeterminado | Descripción |
|---|---|---|
SkipExternalResources |
true |
Omitir recursos externos. Establézcalo en false para restaurar el comportamiento anterior a la 26.10. |
WhitelistedResources |
empty | Nombres de host o prefijos de URI absolutos que se cargan incluso cuando los recursos se omiten. |
ExternalResourceHandler |
null |
Se llama para cada recurso externo; puede permitirlo, omitirlo o proporcionar su contenido. |
Permita solo hosts de confianza (recomendado):
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
}
Inspeccione, permita o sustituya cada recurso con un controlador:
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");
}
}
Motores de documentos actualizados
Los motores integrados de procesamiento de texto, hoja de cálculo, presentación, PDF, diagramas, correo electrónico, imágenes, CAD y renderizado gráfico se han actualizado a sus versiones de octubre de 2026. Los documentos regenerados y las vistas previas de página pueden diferir ligeramente a nivel de byte o píxel, aunque siguen siendo visualmente equivalentes.
Para proyectos .NET 6 y .NET 8, los paquetes de tiempo de ejecución ahora dependen de SkiaSharp 4.152.1. Si su proyecto hace referencia directamente a SkiaSharp 3.x, actualícelo a 4.x.
Actualización de seguridad
Los motores de documentos incluyen System.Security.Cryptography.Pkcs 8.0.0 o 8.0.1, que están afectados por CVE-2026-84008 y CVE-2026-70162. GroupDocs.Annotation ahora hace referencia al parche 8.0.2 en todos los frameworks de destino. No se requieren cambios de código.
Correcciones
- EML desde un flujo. Un mensaje EML que comienza con
MIME-Version: 1.0se detectaba como un archivo MHT, y abrirlo desde un flujo lanzabaFileTypeNotSupportedException. Ahora esos mensajes se abren de la misma manera desde un flujo y desde un archivo, y los archivos MHT ahora son compatibles como documentos de correo electrónico. - Documentos antiguos en .NET 8. Los documentos anotados por versiones anteriores a la 26.6 fallaban al abrirse en .NET 8 con
NotSupportedException. Ahora se abren: las anotaciones heredadas se omiten con una advertencia en el registro, y se pueden agregar y guardar nuevas anotaciones. Un problema relacionado con presentaciones re‑guardadas (PPTX) cuyas anotaciones no podían leerse se ha corregido en todos los frameworks. - Rotación de PDF de 90 grados. Rotar una página PDF con
Annotator.Rotationfuncionaba para 180 y 270 grados, pero una rotación de 90 grados se perdía al guardar. Ahora se conserva para cualquier ángulo:
using (Annotator annotator = new Annotator("input.pdf"))
{
annotator.ProcessPages = 1; // the page to rotate
annotator.Rotation = RotationDocument.on90; // previously ignored
annotator.Save("output.pdf");
}
Cambios en la API pública
La versión agrega los siguientes miembros:
LoadOptions.SkipExternalResourcesLoadOptions.WhitelistedResourcesLoadOptions.ExternalResourceHandlerExternalResourceHandlerclassExternalResourceLoadingArgsclass
No se eliminaron ni cambiaron miembros públicos.
Cómo obtener la actualización
NuGet
Instale o actualice a GroupDocs.Annotation 26.10.0 usando NuGet. El paquete resuelve automáticamente el paquete de tiempo de ejecución para su framework de destino (.NET Framework 4.6.2, .NET 6 o .NET 8):
dotnet add package GroupDocs.Annotation --version 26.10.0
Descarga directa
Descargue la versión desde la página GroupDocs.Annotation for .NET 26.10.