C# / VB.NET 获取PDF文档的数字签名信息
文档中的数字签名具有不可否认性,可有效防伪防篡改。对文档中已有的数字签名信息,可通过一定方法获取,下面通过程序代码介绍如何来实现。程序中,使用了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文档添加数字签名
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2017-12-14 C# 添加、修改以及删除Excel迷你图表的方法