public static PdfStamper CreateSignature(PdfReader reader, Stream os, char pdfVersion, string tempFile, bool append)
{
PdfStamper stp;
if (tempFile == null) {
ByteBuffer bout = new ByteBuffer();
stp = new PdfStamper(reader, bout, pdfVersion, append);
stp.sigApp = new PdfSignatureAppearance(stp.stamper);
stp.sigApp.Sigout = bout;
}
else {
if (Directory.Exists(tempFile))
tempFile = Path.GetTempFileName();
FileStream fout = new FileStream(tempFile, FileMode.Create, FileAccess.Write);
stp = new PdfStamper(reader, fout, pdfVersion, append);
stp.sigApp = new PdfSignatureAppearance(stp.stamper);
stp.sigApp.SetTempFile(tempFile);
}
stp.sigApp.Originalout = os;
stp.sigApp.SetStamper(stp);
stp.hasSignature = true;
PdfDictionary catalog = reader.Catalog;
PdfDictionary acroForm = (PdfDictionary)PdfReader.GetPdfObject(catalog.Get(PdfName.ACROFORM), catalog);
if (acroForm != null) {
acroForm.Remove(PdfName.NEEDAPPEARANCES);
stp.stamper.MarkUsed(acroForm);
}
return stp;
}