Що нового в цьому випуску
-
[Feature] Підтримка та валідація цифрових підписів на зображеннях (SIGNATURENET‑5528)
Вводиться вбудовування цифрових підписів у PNG та JPG за допомогою стеганографії. Підтримуються підписи, захищені паролем, робота з потоками/файлами та повна верифікація з необов’язковими порогами виявлення. -
[Enhancement] Оптимізація LINQ‑запитів для операцій з підписами (SIGNATURENET‑5500)
Переписано LINQ‑логіку в бібліотеці для зменшення виділення пам’яті та підвищення швидкості виконання. Додається фільтрація на основі предикатів для методівSearchіVerify, що дозволяє розробникам попередньо відфільтрувати підписи перед ресурсомісткими обчисленнями.
Виправлення та покращення
- [Bug Fix] Виправлено виключення ініціалізатора типу
GeneratePreview()для формату DOC у Linux (SIGNATURENET‑5555)
Виключення більше не виникає під час генерації попередніх переглядів документів Microsoft Word у Linux‑середовищах.
Як використовувати нові функції
Підписання зображення (стеганографія)
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}");
}
}
Перевірка підписаного зображення
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.");
}
}
Розширена верифікація з повним витягом даних
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‑оптимізований пошук з предикатом
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‑оптимізована верифікація з предикатом
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");
}
Як отримати оновлення
- NuGet – Оновіть до останньої версії пакету GroupDocs.Signature:
dotnet add package GroupDocs.Signature --version 25.12 - Direct Download – Завантажте зкомпільовані збірки для .NET з офіційної сторінки релізу:
GroupDocs.Signature for .NET 25.12 DLLs
Ресурси
- Повні нотатки випуску – (посилання на сторінку нотаток випуску, якщо доступно)
- Документація – https://docs.groupdocs.com/signature/net/
- Форум підтримки – https://forum.groupdocs.com/c/signature/