文檔中的數字簽名具備不能否認性,可有效防僞防篡改。對文檔中已有的數字簽名信息,可經過必定方法獲取,下面經過程序代碼介紹如何來實現。程序中,使用了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