中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何獲取PDF中的數字簽名證書

發布時間:2021-11-26 13:15:09 來源:億速云 閱讀:312 作者:柒染 欄目:開發技術

C#如何獲取PDF中的數字簽名證書,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

PDF中的加數字簽名是對文檔權威性的有效證明。我們在向PDF文檔添加簽名時,需要準備可信任的簽名證書。同時,對已有的簽名,可驗證簽名是否有效,也可以獲取文檔中的簽名證書信息。下面,以C#代碼示例展示如何來獲取PDF中的數字簽名證書信息。

環境準備

需要在程序中導入Spire.Pdf.dll。這里以一個控制臺應用程序為例,引用dll可選擇以下兩種方法中的任意一種即可:

方法1:打開“解決方案資源管理器”,鼠標右鍵點擊“引用”,“添加引用”:

C#如何獲取PDF中的數字簽名證書

選擇“瀏覽”,“瀏覽”,并找到本地路徑BIN文件夾下的Spire.Pdf.dll文件:

C#如何獲取PDF中的數字簽名證書

C#如何獲取PDF中的數字簽名證書

添加到引用列表后,勾選,點擊“OK”完成引用:

C#如何獲取PDF中的數字簽名證書

C#如何獲取PDF中的數字簽名證書

方法2:通過NuGet安裝。

在VS程序中打開“解決方案資源管理器”,鼠標右鍵點擊“引用”,“管理NuGet包”:

C#如何獲取PDF中的數字簽名證書

點擊“搜索”,在搜索框中輸入,點擊包,安裝:

C#如何獲取PDF中的數字簽名證書

或者通過PM控制臺安裝:

Install-Package Spire.PDF -Version 7.11.1

代碼示例

實現讀取簽名的證書,本次代碼主要分為以下步驟:

1. 實例化PdfDocument類的對象,并通過PdfDocument. LoadFromFile(string filename)方法加載PDF文檔。

2. 通過PdfFormWidget. FieldsWidget屬性獲取PdfFormFieldWidgetCollection類的域集合

3. 通過for循環遍歷所有域,并判斷集合中的域是否為PdfSignatureFieldWidget類的簽名域。

4. 獲取PdfSignatureFieldWidget類的簽名域后,通過其提供的PdfSignatureFieldWidget. Signature.Certificate屬性獲取簽名證書,以及該屬性下枚舉的20余種方法(如下圖)來獲取證書的詳細信息。

C#如何獲取PDF中的數字簽名證書

(本次代碼中僅簡單列舉使用了2種方法獲取證書信息。)

5. 最后通過控制臺輸出獲取的證書信息。

C#

using Spire.Pdf;
using Spire.Pdf.Widget;
using System;

namespace GetCertificateInfo
{
    class Program
    {
        static void Main(string[] args)
        {
            //實例化PdfDocument類的對象,并加載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];

                    //獲取簽名證書
                    string certificateInfo = signatureFieldWidget.Signature.Certificate.ToString();
                    
                    //獲取證書格式
                    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())
            '實例化PdfDocument類的對象,并加載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)

                    '獲取簽名證書
                    Dim certificateInfo As String = signatureFieldWidget.Signature.Certificate.ToString()

                    '獲取證書格式
                    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

讀取結果

C#如何獲取PDF中的數字簽名證書

看完上述內容,你們掌握C#如何獲取PDF中的數字簽名證書的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

pdf
AI

沭阳县| 赤水市| 乐山市| 海宁市| 吐鲁番市| 库车县| 景谷| 资兴市| 彭州市| 布拖县| 若尔盖县| 玉林市| 钟山县| 班戈县| 廉江市| 宝应县| 乌鲁木齐市| 兴安盟| 尼勒克县| 营山县| 三江| 周口市| 涿鹿县| 贵州省| 万载县| 达州市| 乐陵市| 永登县| 林口县| 永丰县| 元朗区| 星座| 习水县| 互助| 上栗县| 九台市| 嘉鱼县| 都江堰市| 宜良县| 隆子县| 遵义市|