The scenario is like that:
1. We have a PDF that is sent to thirdparty signature provider that signs the file.
2. Signature provider gives us signed file - without any visualisation - file is just signed with a certificate
3. We want to add visualisation.
How can we do that? I tried somethink like:
- Code: Select all
PdfDocument doc = new PdfDocument(fileName);
//search for existing signature
PdfFormWidget form = (PdfFormWidget)doc.Form;
PdfSignature signature = null;
string name = string.Empty;
foreach (var field in form.FieldsWidget)
{
var f = field as PdfSignatureFieldWidget;
if (f == null || f.Signature == null)
continue;
signature = f.Signature;
name = f.FullName;
}
//add visualisation
PdfSignatureField sigField = new PdfSignatureField(doc.Pages[0], name);
sigField.BorderWidth = 1.0f;
sigField.BorderStyle = PdfBorderStyle.Solid;
sigField.BorderColor = new Spire.Pdf.Graphics.PdfRGBColor(Color.Black);
sigField.Bounds = new RectangleF(100, 100, 100, 100);
sigField.Signature = new PdfSignature(doc, doc.Pages[0], signature.Certificate, "SigTest");
sigField.Signature.GraphicsMode = GraphicMode.SignNameAndSignDetail;
sigField.Signature.NameLabel = "Podpisujący: ";
sigField.Signature.Name = "Adam";
sigField.Signature.Date = DateTime.Now;
sigField.Signature.ReasonLabel = "Powód: ";
sigField.Signature.Reason = "Bo mogę";
sigField.Signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
doc.Form.Fields.Add(sigField);
doc.SaveToFile(destinationFilePath, FileFormat.PDF);
But the result is error saying "lost private key". So, is there any way to do that? Add visualisation to existing signature?