Wat is er nieuw in deze release

  • [Feature] Ondersteuning en validatie van digitale handtekeningen voor afbeeldingen (SIGNATURENET‑5528)
    Introduceert steganografisch gebaseerde ingebedding van digitale handtekeningen in PNG- en JPG-afbeeldingen. Ondersteunt wachtwoordbeveiligde handtekeningen, stroom‑/bestandsafhandeling, en volledige verificatie met optionele detectiedrempels.

  • [Enhancement] Optimalisatie van LINQ‑query’s voor handtekeningbewerkingen (SIGNATURENET‑5500)
    Herschreven LINQ‑logica in de hele bibliotheek om geheugenallocaties te verminderen en de uitvoersnelheid te verbeteren. Voegt predikaat‑gebaseerde filtering toe voor Search‑ en Verify‑methoden, waardoor ontwikkelaars handtekeningen vooraf kunnen filteren voordat dure verwerking plaatsvindt.

Oplossingen en verbeteringen

  • [Bug Fix] GeneratePreview() type‑initializer‑uitzondering verholpen voor DOC‑formaat op Linux (SIGNATURENET‑5555)
    De uitzondering wordt niet langer gegooid bij het genereren van previews voor Microsoft Word‑documenten op Linux‑omgevingen.

Hoe de nieuwe functies te gebruiken

Een afbeelding ondertekenen (steganografie)

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

Een ondertekende afbeelding verifiëren

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

Geavanceerde verificatie met volledige gegevensextractie

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

LINQ‑geoptimaliseerde zoekopdracht met predikaat

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

LINQ‑geoptimaliseerde verificatie met predikaat

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

Hoe de update te verkrijgen

  • NuGet – Upgrade naar het nieuwste GroupDocs.Signature‑pakket:
    dotnet add package GroupDocs.Signature --version 25.12
    
  • Direct Download – Haal de gecompileerde assemblies voor .NET op van de officiële release‑pagina:
    GroupDocs.Signature for .NET 25.12 DLLs

Bronnen