เรามีความยินดีที่จะแจ้งการเปิดตัว GroupDocs.Signature for .NET v26.9 ซึ่งพร้อมให้ใช้งานตั้งแต่ กันยายน 2026 รุ่นนี้เป็นการอัปเดตที่มุ่งเน้นด้านความปลอดภัย โดยเพิ่มการสนับสนุน .NET 10 ยกเลิกการสนับสนุน .NET Standard 2.1 และบังคับใช้ค่าเริ่มต้นที่เข้มงวดขึ้นสำหรับการโหลดทรัพยากรภายนอก, อัลกอริทึมการแฮช, และการตรวจสอบใบรับรอง นอกจากนี้ยังเพิ่มการลงนามเอกสาร Word ด้วยใบรับรอง post‑quantum (ML‑DSA) และแก้ไขบั๊กสำคัญหลายรายการที่เกี่ยวกับการตรวจสอบ, การบันทึก, และพฤติกรรมเฉพาะแพลตฟอร์ม
มีอะไรใหม่ในรุ่นนี้
- [Feature] การสนับสนุน .NET 10 และยกเลิก .NET Standard 2.1 (SIGNATURENET-5938)
- [Enhancement] ไม่โหลดทรัพยากรภายนอกโดยค่าเริ่มต้น (SIGNATURENET-5950)
- [Enhancement] ลายเซ็นดิจิทัล PDF ใช้ SHA‑256 เป็นค่าเริ่มต้นและเคารพ HashAlgorithm (SIGNATURENET-5976)
- [Enhancement] SignatureFont ไม่เปิดเผยประเภท System.Drawing บน .NET 6 ขึ้นไป (SIGNATURENET-5943)
- [Enhancement] ปฏิเสธการลงนามด้วยใบรับรองที่หมดอายุหรือยังไม่ถึงวันเริ่มใช้โดยค่าเริ่มต้น (SIGNATURENET-5995)
- [Enhancement] ลงนามเอกสาร Word ด้วยใบรับรอง post‑quantum (ML‑DSA) (SIGNATURENET-5996)
- [Bug] Verify ไม่ได้ตรวจสอบลายเซ็นดิจิทัล PDF อย่างคริปโตกราฟิก (SIGNATURENET-5978)
- [Bug] ไม่สนใจ SubjectName และ IssuerName ขณะตรวจสอบเอกสาร PDF (SIGNATURENET-5997)
- [Bug] ส่งข้อมูลรับรองเซิร์ฟเวอร์เวลาเพียงเมื่อกำหนดทั้งชื่อผู้ใช้และรหัสผ่าน (SIGNATURENET-5998)
- [Bug] การบันทึกงานนำเสนอและเอกสาร Word เป็นภาพล้มเหลวบน Linux และ macOS (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; ก่อนหน้านี้ถูกละเลย |
SignatureSettings.LogLevel |
ไม่เปลี่ยนแปลงลายเซ็น ตอนนี้มีผล: เฉพาะข้อความระดับที่ระบุจะถูกส่งไปยัง logger, LogLevel.None จะไม่บันทึกอะไรเลย ก่อนหน้านี้ทุกข้อความจะถูกบันทึกโดยไม่คำนึงถึงค่า คำอธิบายของค่าต่าง ๆ ของ LogLevel ได้รับการแก้ไข |
VerificationResult.Succeeded, VerificationResult.TotalSignatures |
ไม่เปลี่ยนแปลงลายเซ็น เมื่อใช้วัตถุ VerifyOptions เดียวกันหลายครั้ง ผลลัพธ์จะรายงานเฉพาะลายเซ็นของเอกสารที่ตรวจสอบล่าสุด |
DigitalSignOptions.AllowExpired |
ใหม่ bool ค่าเริ่มต้น false เมื่อ false การลงนามด้วยใบรับรองที่หมดอายุจะโยน GroupDocsSignatureException เมื่อ true เอกสารจะถูกลงนามและบันทึกคำเตือน |
DigitalSignOptions.AllowNotYetValid |
ใหม่ bool ค่าเริ่มต้น false ทำงานเช่นเดียวกันสำหรับใบรับรองที่ยังไม่ถึงวันเริ่มใช้ |
คุณลักษณะใหม่
ไม่มีคุณลักษณะใหม่เพิ่มเติมนอกจากที่ระบุใน มีอะไรใหม่ในรุ่นนี้ และ การเปลี่ยนแปลง 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 ...).
}
ลงนามเอกสาร Word ด้วยใบรับรอง post‑quantum ML‑DSA:
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
อัปเกรดเป็นแพคเกจ GroupDocs.Signature ล่าสุดผ่าน NuGet: GroupDocs.Signature 26.9.0
คำสั่งติดตั้ง:
dotnet add package GroupDocs.Signature --version 26.9.0
ดาวน์โหลดโดยตรง
ดาวน์โหลดไฟล์ assembly จากหน้า GroupDocs.Signature for .NET 26.9