C# 獲取PDF中的數(shù)字簽名證書(shū)
PDF中的加數(shù)字簽名是對(duì)文檔權(quán)威性的有效證明。我們?cè)谙騊DF文檔添加簽名時(shí),需要準(zhǔn)備可信任的簽名證書(shū)。同時(shí),對(duì)已有的簽名,可驗(yàn)證簽名是否有效,也可以獲取文檔中的簽名證書(shū)信息。下面,以C#代碼示例展示如何來(lái)獲取PDF中的數(shù)字簽名證書(shū)信息。
環(huán)境準(zhǔn)備
需要在程序中導(dǎo)入Spire.Pdf.dll。這里以一個(gè)控制臺(tái)應(yīng)用程序?yàn)槔?,引用dll可選擇以下兩種方法中的任意一種即可:
方法1:打開(kāi)“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“添加引用”:
選擇“瀏覽”,“瀏覽”,并找到本地路徑BIN文件夾下的Spire.Pdf.dll文件:
添加到引用列表后,勾選,點(diǎn)擊“OK”完成引用:
方法2:通過(guò)NuGet安裝。
在VS程序中打開(kāi)“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理NuGet包”:
點(diǎn)擊“搜索”,在搜索框中輸入,點(diǎn)擊包,安裝:
或者通過(guò)PM控制臺(tái)安裝:
Install-Package Spire.PDF -Version 7.11.1
代碼示例
實(shí)現(xiàn)讀取簽名的證書(shū),本次代碼主要分為以下步驟:
1. 實(shí)例化PdfDocument類(lèi)的對(duì)象,并通過(guò)PdfDocument. LoadFromFile(string filename)方法加載PDF文檔。
2. 通過(guò)PdfFormWidget. FieldsWidget屬性獲取PdfFormFieldWidgetCollection類(lèi)的域集合
3. 通過(guò)for循環(huán)遍歷所有域,并判斷集合中的域是否為PdfSignatureFieldWidget類(lèi)的簽名域。
4. 獲取PdfSignatureFieldWidget類(lèi)的簽名域后,通過(guò)其提供的PdfSignatureFieldWidget. Signature.Certificate屬性獲取簽名證書(shū),以及該屬性下枚舉的20余種方法(如下圖)來(lái)獲取證書(shū)的詳細(xì)信息。
(本次代碼中僅簡(jiǎn)單列舉使用了2種方法獲取證書(shū)信息。)
5. 最后通過(guò)控制臺(tái)輸出獲取的證書(shū)信息。
C#
using Spire.Pdf; using Spire.Pdf.Widget; using System; namespace GetCertificateInfo { class Program { static void Main(string[] args) { //實(shí)例化PdfDocument類(lèi)的對(duì)象,并加載PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("test.pdf"); //獲取域集合 PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.Form; PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget; //遍歷域 for (int i = 0; i < pdfFormFieldWidgetCollection.Count; i++) { //判定是否為簽名域 if (pdfFormFieldWidgetCollection[i] is PdfSignatureFieldWidget) { //獲取簽名域 PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget)pdfFormFieldWidgetCollection[i]; //獲取簽名證書(shū) string certificateInfo = signatureFieldWidget.Signature.Certificate.ToString(); //獲取證書(shū)格式 string format = signatureFieldWidget.Signature.Certificate.GetFormat(); Console.WriteLine(certificateInfo+ "\n"+ "[CertificateFormat]\n " + format ); } } Console.ReadKey(); } } }
VB.NET
Imports Spire.Pdf Imports Spire.Pdf.Widget Namespace GetCertificateInfo Class Program Private Shared Sub Main(args As String()) '實(shí)例化PdfDocument類(lèi)的對(duì)象,并加載PDF文檔 Dim pdf As New PdfDocument() pdf.LoadFromFile("test.pdf") '獲取域集合 Dim pdfFormWidget As PdfFormWidget = DirectCast(pdf.Form, PdfFormWidget) Dim pdfFormFieldWidgetCollection As PdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget '遍歷域 For i As Integer = 0 To pdfFormFieldWidgetCollection.Count - 1 '判定是否為簽名域 If TypeOf pdfFormFieldWidgetCollection(i) Is PdfSignatureFieldWidget Then '獲取簽名域 Dim signatureFieldWidget As PdfSignatureFieldWidget = DirectCast(pdfFormFieldWidgetCollection(i), PdfSignatureFieldWidget) '獲取簽名證書(shū) Dim certificateInfo As String = signatureFieldWidget.Signature.Certificate.ToString() '獲取證書(shū)格式 Dim format As String = signatureFieldWidget.Signature.Certificate.GetFormat() Console.WriteLine(Convert.ToString((certificateInfo & Convert.ToString(vbLf)) + "[CertificateFormat]" & vbLf & " ") & format) End If Next Console.ReadKey() End Sub End Class End Namespace
讀取結(jié)果
到此這篇關(guān)于C# 獲取PDF中的數(shù)字簽名證書(shū)的文章就介紹到這了,更多相關(guān)C# 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Unity3D使用陀螺儀控制節(jié)點(diǎn)旋轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Unity3D使用陀螺儀控制節(jié)點(diǎn)旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11C#動(dòng)態(tài)調(diào)整數(shù)組大小的方法
這篇文章主要介紹了C#動(dòng)態(tài)調(diào)整數(shù)組大小的方法,涉及C#中靜態(tài)方法CreateInstance的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04基于NPOI用C#開(kāi)發(fā)的Excel以及表格設(shè)置
這篇文章主要為大家詳細(xì)介紹了基于NPOI用C#開(kāi)發(fā)的Excel以及表格設(shè)置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C#命令行參數(shù)解析庫(kù)System.CommandLine使用
System.CommandLine是一個(gè)基于.Net Standard 2.0的命令行參數(shù)解析庫(kù),該項(xiàng)目還是屬于beta狀態(tài),期待以后的正式版本,文章通過(guò)示例代碼給大家介紹了System.CommandLine使用講解,感興趣的朋友一起看看吧2021-06-06C#、ASP.NET通用擴(kuò)展工具類(lèi)之LogicSugar
這篇文章主要介紹了C#、ASP.NET通用擴(kuò)展工具類(lèi)之LogicSugar,本文直接給出實(shí)現(xiàn)代碼和使用方法示例,需要的朋友可以參考下2015-06-06winform攔截關(guān)閉按鈕觸發(fā)的事件示例
這篇文章主要介紹了c# winform攔截關(guān)閉按鈕觸發(fā)的事件示例,大家參考使用吧2014-01-01winform實(shí)現(xiàn)限制及解除鼠標(biāo)移動(dòng)范圍的方法
這篇文章主要介紹了winform實(shí)現(xiàn)限制及解除鼠標(biāo)移動(dòng)范圍的方法,涉及C#控制WinForm鼠標(biāo)事件屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09