C# 如何检查PDF文件的签名次数?

C# 如何检查PDF文件的签名次数?,c#,pdf,itext,bouncycastle,x509certificate,C#,Pdf,Itext,Bouncycastle,X509certificate,如何使用C#最好是iTextSharp 5.5.11检查PDF文件的签名次数?我对任何其他.NETPDF库都持开放态度,只要它能胜任这项工作 我想从我的硬盘上选择一个PDF文件,并在表格上显示该PDF文件的签名次数 显示证书源将是一个额外的好处 谢谢。由于iText在Java和C#中都存在,并且是用前者编写的,我将用Java给出答案,将其移植到C#应该没有问题: 可以使用SignatureUtil#getTotalRevisions()获取数字。它的设计目的是为您提供文档中的签名数,或者如果在上

如何使用C#最好是iTextSharp 5.5.11检查PDF文件的签名次数?我对任何其他.NETPDF库都持开放态度,只要它能胜任这项工作

我想从我的硬盘上选择一个PDF文件,并在表格上显示该PDF文件的签名次数

显示证书源将是一个额外的好处


谢谢。

由于iText在Java和C#中都存在,并且是用前者编写的,我将用Java给出答案,将其移植到C#应该没有问题:

可以使用
SignatureUtil#getTotalRevisions()
获取数字。它的设计目的是为您提供文档中的签名数,或者如果在上次签名文档后应用了更改,则该数字加上一个数字

请查收。这里处理了三个文件:第一个文件已签字,但随后进行了修改;第二个文件由四个人签字;第三个文件由四个人签字,然后进行了修改。SignatureUtil#getTotalRevisions()分别为它们返回2、4和5


第一种和第三种情况下的结果有点误导,但可以使用
SignatureUtil#signatureCoversWholeDocument(String)
检查最后一次修订是否与最后一次签名相对应。

证书指的是签名?还是说X.509证书?好的。要使用PDF,您应该使用PDF库。通用PDF库通常支持PDF签名,并有一个API,允许您以明显的方式访问签名信息。Itext的签名API确实允许计算现有签名。如果您谈论的是itext 7,请注意签名api在其自己的模块中。Uladzimir使用了itext 7.x,这是对itext 5及之前版本的完全重写。也就是说,如果您刚开始使用itext,您可能希望使用当前版本7.x而不是旧的5.x版本。如果出于某种原因需要使用旧的5.x版本,则与上面引用的示例对应的5.x示例如下。