Was ist neu in diesem Release

  • [Feature] Bild‑Digitale‑Signaturunterstützung und -Validierung (SIGNATURENET‑5528)
    Führt steganografiebasiertes Einbetten digitaler Signaturen in PNG‑ und JPG‑Bilder ein. Unterstützt passwortgeschützte Signaturen, Stream/Datei‑Verarbeitung und vollständige Verifizierung mit optionalen Erkennungs‑Schwellen.

  • [Enhancement] Optimierung von LINQ‑Abfragen für Signatur‑Operationen (SIGNATURENET‑5500)
    Refaktorierte LINQ‑Logik in der Bibliothek, um Speicherzuweisungen zu reduzieren und die Ausführungsgeschwindigkeit zu erhöhen. Fügt prädikatbasierte Filterung für Search‑ und Verify‑Methoden hinzu, sodass Entwickler Signaturen vor der kostenintensiven Verarbeitung vorfiltern können.

Fehlerbehebungen und Verbesserungen

  • [Bug Fix] GeneratePreview()‑Typinitialisierer‑Ausnahme beim DOC‑Format unter Linux behoben (SIGNATURENET‑5555)
    Die Ausnahme wird nicht mehr ausgelöst, wenn Vorschaubilder für Microsoft‑Word‑Dokumente unter Linux‑Umgebungen erzeugt werden.

So verwenden Sie die neuen Funktionen

Signieren eines Bildes (Steganographie)

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("Bild erfolgreich signiert!");
        Console.WriteLine($"Hinzugefügte Signaturen: {signResult.Succeeded.Count}");
    }
}

Verifizieren eines signierten Bildes

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("Digitale Signatur ist gültig!");
        Console.WriteLine($"Verifizierte Signaturen: {verifyResult.Succeeded.Count}");
    }
    else
    {
        Console.WriteLine("Digitale Signatur ist ungültig oder nicht gefunden.");
    }
}

Erweiterte Verifizierung mit vollständiger Datenextraktion

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($"Signatur mit {verifyOptions.DetectedProbability.Value}% Wahrscheinlichkeit erkannt");
    }
}

LINQ‑optimierte Suche mit Prädikat

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

    // Filtert nur Textsignaturen, die "Approved" enthalten
    SearchResult result = signature.Search(searchOptions,
        sig => sig is TextSignature txt && txt.Text.Contains("Approved"));

    foreach (BaseSignature sig in result.Signatures)
    {
        Console.WriteLine($"Gefunden: {((TextSignature)sig).Text}");
    }
}

LINQ‑optimierte Verifizierung mit Prädikat

using (Signature signature = new Signature("signed_document.pdf"))
{
    TextVerifyOptions verifyOptions = new TextVerifyOptions("John Smith");

    // Verifiziert nur Signaturen auf Seite 1
    List<BaseSignature> result = signature.Verify(verifyOptions,
        sig => sig.PageNumber == 1);

    Console.WriteLine($"Gefunden {result.Count} verifizierte Signaturen auf Seite 1");
}

So erhalten Sie das Update

  • NuGet – Aktualisieren Sie auf das neueste GroupDocs.Signature‑Paket:
    dotnet add package GroupDocs.Signature --version 25.12
    
  • Direct Download – Laden Sie die kompilierten Assemblies für .NET von der offiziellen Release‑Seite herunter:
    GroupDocs.Signature für .NET 25.12 DLLs

Ressourcen