檔案中的數字簽名具有不可否認性,可有效防偽防篡改,對檔案中已有的數字簽名資訊,可通過一定方法獲取,下面通程序式代碼介紹如何來實作,程式中,使用了Spire.PDF.dll,版本:6.11.6,可自行在官網下載包,或者通過Nuget下載,下載后,在程式中添加參考dll檔案,如下添加參考效果:

完成dll檔案添加參考后,可參考如下代碼來操作:
[C#]
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]
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
數字簽名資訊獲取結果:

相關閱讀推薦: C# 給PDF檔案添加數字簽名
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/234527.html
標籤:C#
下一篇:C# 呼叫SAP RFC
