Những gì mới trong bản phát hành này
-
[Feature] Hỗ trợ và xác thực chữ ký số trên hình ảnh (SIGNATURENET‑5528)
Giới thiệu việc nhúng chữ ký số dựa trên kỹ thuật steganography vào ảnh PNG và JPG. Hỗ trợ chữ ký được bảo vệ bằng mật khẩu, xử lý stream/tệp và xác thực đầy đủ với ngưỡng phát hiện tùy chọn. -
[Enhancement] Tối ưu hoá truy vấn LINQ cho các thao tác chữ ký (SIGNATURENET‑5500)
Tái cấu trúc logic LINQ trong toàn bộ thư viện để giảm việc phân bổ bộ nhớ và cải thiện tốc độ thực thi. Thêm bộ lọc dựa trên predicate cho các phương thứcSearchvàVerify, cho phép nhà phát triển lọc trước các chữ ký trước khi thực hiện các xử lý tốn kém.
Sửa lỗi và cải tiến
- [Bug Fix] Sửa lỗi ngoại lệ khởi tạo kiểu
GeneratePreview()với định dạng DOC trên Linux (SIGNATURENET‑5555)
Ngoại lệ sẽ không còn được ném khi tạo bản xem trước cho tài liệu Microsoft Word trên môi trường Linux.
Cách sử dụng các tính năng mới
Ký một hình ảnh (steganography)
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}");
}
}
Xác minh một hình ảnh đã ký
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.");
}
}
Xác minh nâng cao với trích xuất dữ liệu đầy đủ
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");
}
}
Tìm kiếm tối ưu LINQ với predicate
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}");
}
}
Xác minh tối ưu LINQ với predicate
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ách nhận bản cập nhật
- NuGet – Nâng cấp lên gói GroupDocs.Signature mới nhất:
dotnet add package GroupDocs.Signature --version 25.12 - Tải trực tiếp – Tải các assembly đã biên dịch cho .NET từ trang phát hành chính thức:
GroupDocs.Signature for .NET 25.12 DLLs
Tài nguyên
- Ghi chú phát hành đầy đủ – (liên kết đến trang ghi chú phát hành, nếu có)
- Tài liệu – https://docs.groupdocs.com/signature/net/
- Diễn đàn hỗ trợ – https://forum.groupdocs.com/c/signature/