C# 多重签名无效
我尝试将我的iText5代码移植到iText7中。我成功地签署了一份未签名的pdf文件,但在签署一份已签名的文件时遇到了一些麻烦 我简化了代码。以下内容将一些有趣的内容放入我的pdf中。守则:C# 多重签名无效,c#,digital-signature,itext7,C#,Digital Signature,Itext7,我尝试将我的iText5代码移植到iText7中。我成功地签署了一份未签名的pdf文件,但在签署一份已签名的文件时遇到了一些麻烦 我简化了代码。以下内容将一些有趣的内容放入我的pdf中。守则: using (var os = new MemoryStream()) { var pdfSigner = new ExtendedPdfSigner(new PdfReader(new MemoryStream(File.ReadAllBytes(@"C:\Users\x\Desktop\sig
using (var os = new MemoryStream())
{
var pdfSigner = new ExtendedPdfSigner(new PdfReader(new MemoryStream(File.ReadAllBytes(@"C:\Users\x\Desktop\signed.pdf"))), os, true);
var external = new ExternalBlankSignatureContainer(PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached);
pdfSigner.SignExternalContainer(external, 8192);
File.WriteAllBytes(@"C:\Users\x\Desktop\tempFile.pdf", os.ToArray());
}
它还显示了第一个签名中的“文档随后发生了更改”信息
我不知道这是否是一个bug,但我甚至在7.1.3快照中尝试过
我尝试再次签名的已签名pdf是。
生成的临时pdf是。这是由于iText 7中的错误造成的。在检索页面的注释以向其添加签名小部件时,所有注释都会被触摸:对其页面的可选引用会被添加到注释中,并标记为已更改 因此,该问题可以通过以下代码重现(在Java中;在C#中也是如此):
try(PdfDocument PdfDocument=new PdfDocument(new PdfReader(SOURCE)、new PdfWriter(DEST)、new StampingProperties(){
getPage(1.getAnnotations();
}
(测试testStampSigned
)
仅执行此getter会导致更改第1页上的所有注释,从而使Adobe Reader对注释修改发出警告。如果签名是不允许更改的认证签名,则会导致原始签名无效
一个纯粹的能手不应该有这样的副作用。有帮助吗?@stuartd Nope。已经检查过了。你的
ExtendedPdfSigner
类与itextPdfSigner
有什么不同?@mklGetRangeStream
方法是受保护的
,因此我通过ExtendedPdfSigner
使它可用。如果使用了PdfSigner
,结果是一样的。由于.NET核心支持,我想从5移植到iText7。然而,我想现在还为时过早。我想知道他们什么时候会发布一个稳定的版本,因为有很多问题都是关于这些bug的,是的,有一些bug。但请注意,新功能只会添加到itext 7中。因此,您可能会考虑使用iTXT 7实现新的功能(因为它们可能需要新的ITEXT特性),而仍然使用ITEXT 5用于旧的功能(这被证明是可行的)。