我试图将自定义数据添加到签名字段(最后这可以是从生物识别到信息的任何内容)。
PdfFormField signatureField = stamper.AddSignature(
signingBlock.Name, signingBlock.Page,
signingBlock.X, signingBlock.Y, signingBlock.X + signingBlock.Width,
signingBlock.Y + signingBlock.Height);
signatureField.Put(new PdfName("SomeRandomKey"), new PdfString("Some random text goes here"));
但是自从玩这个以来,我已经检查了PDF结构,并且值永远不会存储在文档中。将自定义数据添加到签名字段的适当方法是什么,它必须特定于签名字段,因为我不能使用/ Info字典。
任何帮助将不胜感激。 亲切的问候
答案 0 :(得分:2)
stamper.AddSignature
是一种方便的方法
因此,您添加到从该方法检索的对象的信息添加得太晚了。
该方法实现如下:
virtual public PdfFormField AddSignature(String name, int page, float llx, float lly, float urx, float ury) {
PdfAcroForm acroForm = stamper.AcroForm;
PdfFormField signature = PdfFormField.CreateSignature(stamper);
acroForm.SetSignatureParams(signature, name, llx, lly, urx, ury);
acroForm.DrawSignatureAppearences(signature, llx, lly, urx, ury);
AddAnnotation(signature, page);
return signature;
}
AddAnnotation
调用隐式将表单字段对象写入stream / file。
因此,您可能希望做类似这样的事情,而不是像您一样调用它:
PdfAcroForm acroForm = stamper.Writer.AcroForm;
PdfFormField signature = PdfFormField.CreateSignature(stamper.Writer);
acroForm.SetSignatureParams(signature, signingBlock.Name, signingBlock.X, signingBlock.Y, signingBlock.X + signingBlock.Width, signingBlock.Y + signingBlock.Height);
acroForm.DrawSignatureAppearences(signature, signingBlock.X, signingBlock.Y, signingBlock.X + signingBlock.Width, signingBlock.Y + signingBlock.Height);
signature.Put(new PdfName("SomeRandomKey"), new PdfString("Some random text goes here"));
stamper.AddAnnotation(signature, signingBlock.Page);