亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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

標簽:
C#

文档中的数字签名具有不可否认性,可有效防伪防篡改。对文档中已有的数字签名信息,可通过一定方法获取,下面通过程序代码介绍如何来实现。程序中,使用了Spire.PDF.dll,版本:6.11.6,可自行在官网下载包,或者通过Nuget下载。下载后,在程序中添加引用dll文件。如下添加引用效果:

https://img1.sycdn.imooc.com/5fc9ee02000183f203190605.jpg

完成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


数字签名信息获取结果:

https://img1.sycdn.imooc.com/5fc9f1ad000157f906770442.jpg



點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
9
獲贊與收藏
48

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消