Novedades en esta versión
-
[Feature] Soporte y validación de firma digital en imágenes (SIGNATURENET‑5528)
Introduce la inserción de firmas digitales basada en esteganografía en imágenes PNG y JPG. Soporta firmas protegidas con contraseña, manejo de flujos/archivos y verificación completa con umbrales de detección opcionales. -
[Enhancement] Optimización de consultas LINQ para operaciones de firma (SIGNATURENET‑5500)
Lógica LINQ reestructurada en toda la biblioteca para reducir asignaciones de memoria y mejorar la velocidad de ejecución. Añade filtrado basado en predicados para los métodosSearchyVerify, permitiendo a los desarrolladores pre‑filtrar firmas antes de un procesamiento costoso.
Correcciones y mejoras
- [Bug Fix] Solucionado el error de inicializador de tipo en
GeneratePreview()con formato DOC en Linux (SIGNATURENET‑5555)
La excepción ya no se lanza al generar vistas previas para documentos Microsoft Word en entornos Linux.
Cómo usar las nuevas funcionalidades
Firmar una imagen (esteganografía)
using GroupDocs.Signature;
using GroupDocs.Signature.Options;
string inputFile = "image.png";
string outputFile = "signed_image.png";
string password = "MySecurePassword123";
using (Signature signature = new Signature(inputFile))
{
ImageDigitalSignOptions signOptions = new ImageDigitalSignOptions
{
Password = password
};
SignResult signResult = signature.Sign(outputFile, signOptions);
if (signResult.Succeeded?.Count > 0)
{
Console.WriteLine("Image signed successfully!");
Console.WriteLine($"Signatures added: {signResult.Succeeded.Count}");
}
}
Verificar una imagen firmada
using GroupDocs.Signature;
using GroupDocs.Signature.Options;
string signedFile = "signed_image.png";
string password = "MySecurePassword123";
using (Signature signature = new Signature(signedFile))
{
ImageDigitalVerifyOptions verifyOptions = new ImageDigitalVerifyOptions
{
Password = password,
DetectionThresholdPercent = 75 // optional, 0‑100%
};
VerificationResult verifyResult = signature.Verify(verifyOptions);
if (verifyResult.IsValid)
{
Console.WriteLine("Digital signature is valid!");
Console.WriteLine($"Verified signatures: {verifyResult.Succeeded.Count}");
}
else
{
Console.WriteLine("Digital signature is invalid or not found.");
}
}
Verificación avanzada con extracción completa de datos
using (Signature signature = new Signature("signed_image.png"))
{
ImageDigitalVerifyOptions verifyOptions = new ImageDigitalVerifyOptions
{
Password = "MySecurePassword123",
UseFullDataExtraction = true, // maximum accuracy
DetectionThresholdPercent = 85
};
VerificationResult verifyResult = signature.Verify(verifyOptions);
if (verifyResult.IsValid && verifyOptions.DetectedProbability.HasValue)
{
Console.WriteLine($"Signature detected with {verifyOptions.DetectedProbability.Value}% probability");
}
}
Búsqueda optimizada con LINQ y predicado
using GroupDocs.Signature;
using GroupDocs.Signature.Options;
using GroupDocs.Signature.Domain;
using (Signature signature = new Signature("document.pdf"))
{
List<SearchOptions> searchOptions = new List<SearchOptions>
{
new TextSearchOptions()
};
// Filter only text signatures containing "Approved"
SearchResult result = signature.Search(searchOptions,
sig => sig is TextSignature txt && txt.Text.Contains("Approved"));
foreach (BaseSignature sig in result.Signatures)
{
Console.WriteLine($"Found: {((TextSignature)sig).Text}");
}
}
Verificación optimizada con LINQ y predicado
using (Signature signature = new Signature("signed_document.pdf"))
{
TextVerifyOptions verifyOptions = new TextVerifyOptions("John Smith");
// Verify only signatures on page 1
List<BaseSignature> result = signature.Verify(verifyOptions,
sig => sig.PageNumber == 1);
Console.WriteLine($"Found {result.Count} verified signatures on page 1");
}
Cómo obtener la actualización
- NuGet – Actualiza al paquete más reciente GroupDocs.Signature:
dotnet add package GroupDocs.Signature --version 25.12 - Descarga directa – Obtén los ensamblados compilados para .NET desde la página oficial de lanzamientos:
GroupDocs.Signature for .NET 25.12 DLLs
Recursos
- Notas completas de la versión – (enlace a la página de notas de la versión, si está disponible)
- Documentación – https://docs.groupdocs.com/signature/net/
- Foro de soporte – https://forum.groupdocs.com/c/signature/