[使用iTextSharp的代码:
PdfReader reader = new PdfReader(document);
PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(document + "_signed.pdf", FileMode.Create, FileAccess.Write), '\0');
PdfSignatureAppearance sap = st.SignatureAppearance;
// something
PdfSignature dic = new PdfSignature(filterName, PdfName.ADBE_PKCS7_DETACHED);
sap.CryptoDictionary = dic;
我需要使用iText7编写它:
PdfReader reader = new PdfReader(@"C:\Users\RakuVIu\Documents\rozha.pdf");
PdfSigner signer = new PdfSigner(reader, new FileStream(document + "_signed.pdf", FileMode.Create), new StampingProperties());
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
// something
PdfSignature signature = new PdfSignature(filterName, PdfName.Adbe_pkcs7_detached);
appearance.SetCryptoDictionary(signature); // no such method!
因此,我无法设置CryptoDictionary属性,因为没有方法或属性可以执行此操作。
iText 7签名API尝试隐藏实现细节,自5.3.x签名API全面检查以来,该细节不再使用,并且签名字典就是这样的细节。
有关5.3.x版本中引入的签名API的详细信息,请阅读iText Digital Signatures white paper。其中的Java示例已移植到C#,并且可以访问here。