在 PDF 中创建数字签名广泛用于保护 PDF 文件。因此,当您查看一些带有数字签名的PDF文件时,需要获取并验证数字签名。本文向您展示了一种通过使用Spire.PDF和 C# 代码来获取和验证 PDF 中的数字签名的解决方案。
Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库,开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理,且无需安装 Adobe Acrobat。
E-iceblue 功能类库Spire 系列文档处理组件均由中国本土团队研发,不依赖第三方软件,不受其他国家的技术或法律法规限制,同时适配国产操作系统如中科方德、中标麒麟等,兼容国产文档处理软件 WPS(如 .wps/.et/.dps 等格式
Spire.PDF for.net下载 Spire.PDF for java下载
确保 Spire.PDF for .NET(版本 2.9 或更高版本)已正确安装。在下载的 Bin 文件夹中添加 Spire.PDF.dll 作为参考,路径如下:“..\Spire.PDF\Bin\NET4.0\ Spire.PDF.dl”。
下面是如何获取和验证数字签名的C#代码片段:
加载带有数字签名的 PDF 文件。
string filename = @"..\..\DigitalSignature.pdf";
获取 PDF 中的所有签名:
[C#]
List<PdfSignature> signatures = new List<PdfSignature>(); PdfDocument doc = new PdfDocument(filename); PdfFormWidget form = (PdfFormWidget)doc.Form; for (int i = 0; i < form.FieldsWidget.Count; ++i) { PdfSignatureFieldWidget field = form.FieldsWidget[i] as PdfSignatureFieldWidget; if (field != null && field.Signature != null) { PdfSignature signature = field.Signature; signatures.Add(signature); } }
获取第一个签名:
[C#]
PdfSignature signatureOne = signatures[0];
验证签名:
[C#]
try { bool bSignature = signatureOne.VerifySignature(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); }
获取签名日期:
[C#]
DateTime date = signatureOne.Date;
获取签名开始和结束有效的日期:
[C#]
DateTime validStart = certificate.NotBefore; DateTime validEnd = certificate.NotAfter;
获取证书的版本:
[C#]
int version = certificate.Version;
从证书中获取主题专有名称:
[C#]
string subject = certificate.Subject;
请查看有效截图如下:
以上便是如何取并验证 PDF 中的数字签名,如果您有其他问题也可以继续浏览本系列文章,获取相关教程~