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, GeneratePreview y GetDocumentInfo.
  • 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 URI data: y las imágenes incrustadas siempre se cargan.
  • Las anotaciones de imagen no se ven afectadas. ImageAnnotation.ImagePath sigue 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.0 se detectaba como un archivo MHT, y abrirlo desde un flujo lanzaba FileTypeNotSupportedException. 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.Rotation funcionaba 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:

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.

Recursos