在 PDF 簽名中獲取所有證書
Spire.PDF for .NET 是一款專門對(duì) Word 文檔進(jìn)行操作的 .NET 類庫(kù)。致力于在于幫助開發(fā)人員輕松快捷高效地創(chuàng)建、編輯、轉(zhuǎn)換和打印 Microsoft Word 文檔,而無需安裝 Microsoft Word。
行號(hào)用于在每行文本旁邊顯示 Word 自動(dòng)計(jì)算的行數(shù)。當(dāng)我們需要參考合同或法律文件等文檔中的特定行時(shí),它非常有用。word中的行號(hào)功能允許我們?cè)O(shè)置起始值、編號(hào)間隔、與文本的距離以及行號(hào)的編號(hào)方式。使用 Spire.Doc,我們可以實(shí)現(xiàn)上述所有功能。本文將介紹如何將 HTML 轉(zhuǎn)換為 PDF。
歡迎加入spire技術(shù)交流群:767755948
Spire.PDF 允許獲取和驗(yàn)證 PDF 文件中的特定簽名,現(xiàn)在從 3.8.82 版開始,Spire.PDF 支持獲取 PDF 簽名中的所有證書。在本文中,我們將向您展示如何使用 Spire.PDF 實(shí)現(xiàn)此任務(wù)的步驟。
為了演示,我們使用了一個(gè)包含兩個(gè)證書的 PDF 文件模板:
代碼片段
第 1 步:實(shí)例化 PdfDocument 對(duì)象并加載 PDF 文件。
PdfDocument doc = new PdfDocument(); doc.LoadFromFile("UPS.pdf");
第 2 步:創(chuàng)建一個(gè)列表對(duì)象。
List<PdfSignature> signatures = new List<PdfSignature>();
第 3 步:從 PDF 文件中獲取所有簽名,并將其添加到列表對(duì)象中。
var form = (PdfFormWidget)doc.Form; for (int i = 0; i < form.FieldsWidget.Count; ++i) { var field = form.FieldsWidget[i] as PdfSignatureFieldWidget; if (field != null && field.Signature != null) { PdfSignature signature = field.Signature; signatures.Add(signature); } }
第 4 步:從列表中獲取第一個(gè)簽名,然后從簽名中獲取所有證書。
PdfSignature signatureOne = signatures[0]; X509Certificate2Collection collection = signatureOne.Certificates;
有效截圖:
完整代碼:
using System; using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; using Spire.Pdf; using Spire.Pdf.Security; using Spire.Pdf.Widget; namespace Get_all_certificates_in_PDF_signature { class Program { static void Main(string[] args) { PdfDocument doc = new PdfDocument(); doc.LoadFromFile("UPS.pdf"); List<PdfSignature> signatures = new List<PdfSignature>(); var form = (PdfFormWidget)doc.Form; for (int i = 0; i < form.FieldsWidget.Count; ++i) { var field = form.FieldsWidget[i] as PdfSignatureFieldWidget; if (field != null && field.Signature != null) { PdfSignature signature = field.Signature; signatures.Add(signature); } } PdfSignature signatureOne = signatures[0]; X509Certificate2Collection collection = signatureOne.Certificates; foreach (var certificate in collection) { Console.WriteLine(certificate.Subject); } Console.ReadKey(); } } }