PDF控件Spire.PDF for .NET【安全】演示:获取 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允许获取和验证PDF文件中的特定签名,现在从3.8.82版本开始,Spire.PDF支持获取PDF签名中的所有证书。在本文中,我们将向您展示如何使用 Spire.PDF 完成此任务的步骤。

为了进行演示,我们使用了一个 PDF 模板文件,其中包含两个证书:

代码片段:

步骤 1:实例化 PdfDocument 对象并加载 PDF 文件。

复制代码
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("UPS.pdf");

步骤2:创建一个List对象。

复制代码
List<PdfSignature> signatures = new List<PdfSignature>();

步骤3:从PDF文件中获取所有签名并将它们添加到列表对象中。

复制代码
var form = (PdfFormWidget)doc.Form;
for (int i = 0; i < form.FieldsWidget.Count; ++i)
{
var field = form.FieldsWidget[i] as PdfSignatureFieldWidget;
if (field != null && field.Signature != null)
{
PdfSignature signature = field.Signature;
signatures.Add(signature);
}
}

步骤4:从列表中获取第一个签名,然后从该签名中获取所有证书。

复制代码
PdfSignature signatureOne = signatures[0];
X509Certificate2Collection collection = signatureOne.Certificates;

有效截图

完整代码

复制代码
using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using Spire.Pdf;
using Spire.Pdf.Security;
using Spire.Pdf.Widget;

namespace Get_all_certificates_in_PDF_signature
{
class Program
{
static void Main(string[] args)
{
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("UPS.pdf");
List<PdfSignature> signatures = new List<PdfSignature>();
var form = (PdfFormWidget)doc.Form;
for (int i = 0; i < form.FieldsWidget.Count; ++i)
{
var field = form.FieldsWidget[i] as PdfSignatureFieldWidget;

if (field != null && field.Signature != null)
{
PdfSignature signature = field.Signature;
signatures.Add(signature);
}
}
PdfSignature signatureOne = signatures[0];
X509Certificate2Collection collection = signatureOne.Certificates;
foreach (var certificate in collection)
{
Console.WriteLine(certificate.Subject);
}
Console.ReadKey();
}
}
}

以上便是如测 PDF 文档是否受密码保护,如果您有其他问题也可以继续浏览本系列文章,获取相关教程~

相关推荐
大模型玩家七七12 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
Hello.Reader20 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
智驱力人工智能20 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
数据与后端架构提升之路21 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
市场部需要一个软件开发岗位1 天前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
lingggggaaaa1 天前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
凯子坚持 c1 天前
CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎
人工智能·安全
QT.qtqtqtqtqt1 天前
未授权访问漏洞
网络·安全·web安全
ba_pi1 天前
每天写点什么2026-02-04(2.1)信息安全
安全·web安全
枷锁—sha1 天前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全