Firma digitale in PDF
-
23-08-2019 - |
Domanda
Sto cercando di firmare digitalmente un file PDF utilizzando QUESTO progetto come un esempio.
Quando si esegue st.Close (); Mi è toccato il famigerato "riferimento oggetto non impostato a un'istanza di un oggetto".
Non ho idea del perché questo sta accadendo, st è un'istanza di un oggetto ed è usato in precedenza. Questa eccezione sta accadendo all'interno .Close () e come non ho il codice sorgente posso solo cercare di indovinare perché ...
Tutto quello che posso dire è che:
- Il PDF originale viene letto con successo.
- Un pdf vuoto viene generato (immagino che la .Close () scriverà il file).
- Il mio certificato viene caricata, ma non sono sicuro che sia il modo giusto per farlo.
Ecco come sto caricando il certificato:
private void processCert(X509Certificate2 card)
{
X509CertificateParser cp = new org.bouncycastle.x509.X509CertificateParser(card.RawData);
chain = new org.bouncycastle.x509.X509Certificate[] { cp.ReadCertificate() };
}
Questo è il modo che sto cercando di firmare il 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;
}
Qualcuno ha avuto un pensiero sul perché sto ottenendo questa eccezione, o che cosa devo fare per superare questo?
La documentazione iTextSharp non è stato di grande aiuto ...
Soluzione
Ora ho riesco a fare questo lavoro :) Alcune piccole modifiche a questo esempio ha fatto il trucco;)
http://itextpdf.sourceforge.net/howtosign.html#signextitextsharp2