栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# 获取PDF中的数字签名证书

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# 获取PDF中的数字签名证书

PDF中的加数字签名是对文档权威性的有效证明。我们在向PDF文档添加签名时,需要准备可信任的签名证书。同时,对已有的签名,可验证签名是否有效,也可以获取文档中的签名证书信息。下面,以C#代码示例展示如何来获取PDF中的数字签名证书信息。

环境准备

需要在程序中导入Spire.Pdf.dll。这里以一个控制台应用程序为例,引用dll可选择以下两种方法中的任意一种即可:

方法1:打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”:

 选择“浏览”,“浏览”,并找到本地路径下BIN文件夹下的Spire.Pdf.dll文件:

 添加到引用列表后,勾选,点击“OK”完成引用:

 

方法2:通过NuGet安装。

在VS程序中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”:

 

点击“搜索”,在搜索框中输入,点击包,安装:

或者通过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余种方法(如下图)来获取证书的详细信息。

(本次代码中仅简单列举使用了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

读取结果:

 

 —End—

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984085.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号