我正在尝试使用THIS项目对PDF文件进行数字签名。
执行st.Close()时;我得到臭名昭着的“对象引用未设置为对象的实例”。
我不知道为什么会发生这种情况,st是一个对象的实例,它在上面使用。这个异常发生在.Close()中,因为我没有源代码,我只能猜测为什么......
我只能说:
以下是我如何加载证书:
private void processCert(X509Certificate2 card)
{
X509CertificateParser cp = new org.bouncycastle.x509.X509CertificateParser(card.RawData);
chain = new org.bouncycastle.x509.X509Certificate[] { cp.ReadCertificate() };
}
这就是我试图签署PDF的方式。
public string Sign(string SigReason, string SigContact, string SigLocation, bool visible)
{
string bugLog ="";
try
{
PdfReader reader = new PdfReader(this.inputPDF);
//Activate MultiSignatures
PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0', null, true);
FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0');
st.MoreInfo = this.metadata.getMetaData();
st.XmpMetadata = this.metadata.getStreamedMetaData();
PdfSignatureAppearance sap = st.SignatureAppearance;
sap.SetCrypto(this.myCert.Akp, this.myCert.Chain, null, PdfSignatureAppearance.WINCER_SIGNED);
sap.Reason = SigReason;
sap.Contact = SigContact;
sap.Location = SigLocation;
if (visible)
sap.SetVisibleSignature(new iTextSharp.text.Rectangle(100, 100, 250, 150), 1, null);
st.Close();
}
catch (Exception e)
{
bugLog += " ERROR Sign: " + e.Message;
}
return buglog;
}
有没有人知道为什么我会得到这个例外,或者我该怎么做才能克服这个问题?
iTextSharp文档没有多大帮助...
答案 0 :(得分:1)
我现在已经设法使这项工作了:)这个例子的一些小改动就可以了;)
http://itextpdf.sourceforge.net/howtosign.html#signextitextsharp2