C# / VB.NET 獲取PDF文檔的數字簽名信息

文檔中的數字簽名具備不能否認性,可有效防僞防篡改。對文檔中已有的數字簽名信息,可經過必定方法獲取,下面經過程序代碼介紹如何來實現。程序中,使用了Spire.PDF.dll,版本:6.11.6,可自行在官網下載包,或者經過Nuget下載。下載後,在程序中添加引用dll文件。以下添加引用效果:html

 

 

完成dll文件添加引用後,可參考以下代碼來操做:spa

[C#]code

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Security;
using Spire.Pdf.Widget;
using System;
using System.Drawing;

namespace GetSignature
{
    class Program
    {
        static void Main(string[] args)
        {

            //建立PdfDocument實例
            PdfDocument pdf = new PdfDocument();
            //加載含有簽名的PDF文件
            pdf.LoadFromFile("數字簽名.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];
                    //獲取簽名
                    PdfSignature signature = signatureFieldWidget.Signature;
                    String location = signature.LocationInfo;
                    String reason = signature.Reason;
                    String data = signature.Date.ToString();

                    Console.WriteLine("簽名位置信息:" + location + "\n" +
                            "簽名緣由:" + reason + "\n" +
                            "簽名日期:" + data + "\n" +
                            "文檔中的簽名座標:X = " + signatureFieldWidget.Location.X + "  Y = " + signatureFieldWidget.Location.Y);
                    Console.ReadLine();
                }
            }

        }
    }
}

[VB.NET]orm

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Security
Imports Spire.Pdf.Widget
Imports System.Drawing

Namespace GetSignature
    Class Program
        Private Shared Sub Main(args As String())

            '建立PdfDocument實例
            Dim pdf As New PdfDocument()
            '加載含有簽名的PDF文件
            pdf.LoadFromFile("數字簽名.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 signature As PdfSignature = signatureFieldWidget.Signature
                    Dim location As [String] = signature.LocationInfo
                    Dim reason As [String] = signature.Reason
                    Dim data As [String] = signature.[Date].ToString()

                    Console.WriteLine("簽名位置信息:" + location + vbLf + "簽名緣由:" + reason + vbLf + "簽名日期:" + data + vbLf + "文檔中的簽名座標:X = " + signatureFieldWidget.Location.X + "  Y = " + signatureFieldWidget.Location.Y)
                    Console.ReadLine()
                End If
            Next

        End Sub
    End Class
End Namespace

數字簽名信息獲取結果:htm

 

 

相關閱讀推薦: C# 給PDF文檔添加數字簽名blog

相關文章
相關標籤/搜索