我們很高興宣佈 GroupDocs.Signature for .NET v26.9 已於 2026 年 9 月 發佈。此版本是一個以安全為核心的更新,加入了 .NET 10 支援,停止支援 .NET Standard 2.1,並對載入外部資源、雜湊演算法以及憑證驗證的預設行為加以加強。它同時支援使用後量子 (ML‑DSA) 憑證簽署 Word 文件,並修復了多項與驗證、日誌記錄以及平台特定行為相關的關鍵錯誤。
此版本的新功能
- [Feature] .NET 10 支援,停止支援 .NET Standard 2.1 (SIGNATURENET-5938)
- [Enhancement] 預設不再載入外部資源 (SIGNATURENET-5950)
- [Enhancement] PDF 數位簽章預設使用 SHA‑256,並遵循
HashAlgorithm(SIGNATURENET-5976) - [Enhancement]
SignatureFont在 .NET 6 及以上版本不再公開System.Drawing類型 (SIGNATURENET-5943) - [Enhancement] 預設拒絕使用已過期或尚未生效的憑證簽署 (SIGNATURENET-5995)
- [Enhancement] 使用後量子 (ML‑DSA) 憑證簽署 Word 文件 (SIGNATURENET-5996)
- [Bug]
Verify未對 PDF 數位簽章進行加密檢查 (SIGNATURENET-5978) - [Bug] 驗證 PDF 文件時忽略了
SubjectName與IssuerName(SIGNATURENET-5997) - [Bug] 時間戳伺服器憑證僅在同時設定使用者名稱與密碼時才會傳送 (SIGNATURENET-5998)
- [Bug] 在 Linux 與 macOS 上將簡報與 Word 文件另存為影像失敗 (SIGNATURENET-5999)
- [Bug]
LoadExternalResources在壓縮檔內的文件被忽略 (SIGNATURENET-6000) - [Bug] SVG 圖片的外部圖像與樣式表始終被載入 (SIGNATURENET-6001)
- [Bug] 搜尋與驗證含有連結圖片的試算表時拋出
ArgumentNullException(SIGNATURENET-6002) - [Bug]
CertificateVerifyOptions.Expired因本地 UTC 偏移而錯誤 (SIGNATURENET-6003) - [Bug]
SignatureSettings.LogLevel無效 (SIGNATURENET-6004) - [Bug] 重複使用的
VerifyOptions會報告先前已驗證文件的簽章 (SIGNATURENET-6005) - [Bug] 重複使用的
DigitalSignOptions會以第一個憑證與註解簽署後續簡報 (SIGNATURENET-6006) - [Enhancement] 內部改進 (SIGNATURENET-5979)
公開 API 變更
| 成員 | 變更 |
|---|---|
LoadOptions.SkipExternalResources |
新增。 bool,預設 true。設定為 true 時,除非符合 WhitelistedResources,否則不會載入外部資源。 |
LoadOptions.WhitelistedResources |
新增。 List<string>,預設為空。允許在 SkipExternalResources 為 true 時載入的位址片段(不分大小寫)。若位址包含其中任一片段即會載入。設定為 null 會清空清單。 |
LoadOptions.LoadExternalResources |
已淘汰。 仍可使用,但其意義與 SkipExternalResources 相反。預設值已從 true 改為 false。使用時會產生編譯器警告 CS0618。 |
SignatureFont 從 System.Drawing.Font 的隱式轉換 |
已移除(.NET 6、.NET 8、.NET 10 版)。在 .NET Framework 版中 已淘汰。請改為直接設定 SignatureFont 的屬性。 |
SignOptions.HashAlgorithm |
簽章介面未變更。現在會影響 PDF 數位簽章;之前被忽略。 |
DigitalVerifyOptions.SubjectName、DigitalVerifyOptions.IssuerName |
簽章介面未變更。現在會影響 PDF 文件;之前在 PDF 中被忽略。 |
SignatureSettings.LogLevel |
簽章介面未變更。現在會生效:僅記錄包含於該等級中的訊息,LogLevel.None 則不記錄任何訊息。之前無論設定為何,都會記錄所有訊息。已修正 LogLevel 各值的說明。 |
VerificationResult.Succeeded、VerificationResult.TotalSignatures |
簽章介面未變更。當同一個 VerifyOptions 物件被多次呼叫 Verify 時,現在僅列出剛驗證文件的簽章。 |
DigitalSignOptions.AllowExpired |
新增。 bool,預設 false。設定為 false 時,使用已過期憑證簽署會拋出 GroupDocsSignatureException;設定為 true 時,文件仍會簽署,並記錄警告。 |
DigitalSignOptions.AllowNotYetValid |
新增。 bool,預設 false。與 AllowExpired 類似,針對尚未生效的憑證。 |
新功能
除 此版本的新功能 與 公開 API 變更 中列出的項目外,無其他新功能。
程式碼範例
僅允許受信任的外部資源:
LoadOptions loadOptions = new LoadOptions
{
WhitelistedResources = new List<string> { "https://cdn.example.com/images/" }
};
using (Signature signature = new Signature("sample.docx", loadOptions))
{
// 僅會載入來自 https://cdn.example.com/images/ 的影像。
}
使用 SHA‑384 並以過期憑證簽署(會產生警告):
using (Signature signature = new Signature("sample.pdf"))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
HashAlgorithm = HashAlgorithm.Sha384 // 從此版本起生效;預設為 SHA‑256
};
signature.Sign("signed.pdf", options);
}
明確允許使用過期憑證簽署:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger());
using (Signature signature = new Signature("sample.pdf", settings))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
AllowExpired = true
};
signature.Sign("signed.pdf", options);
// 若 certificate.pfx 已過期,文件仍會簽署,且主控台會顯示類似以下警告:
// The signing certificate expired on 2019-05-01 12:00 UTC (subject "CN=...", thumbprint ...)。
}
使用後量子 ML‑DSA 憑證簽署 Word 文件:
using (Signature signature = new Signature("sample.docx"))
{
DigitalSignOptions options = new DigitalSignOptions("ml-dsa-65.pfx")
{
Password = "1234567890"
};
signature.Sign("signed.docx", options);
}
設定日誌僅顯示錯誤與警告:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger())
{
// 僅記錄錯誤與警告,不顯示逐步追蹤。
LogLevel = LogLevel.Error | LogLevel.Warning
};
如何取得更新
NuGet
透過 NuGet 升級至最新的 GroupDocs.Signature 套件:GroupDocs.Signature 26.9.0
安裝指令:
dotnet add package GroupDocs.Signature --version 26.9.0
直接下載
從 GroupDocs.Signature for .NET 26.9 頁面下載組件