"At least one signature is invalid" 在签名 PDF 中添加图章后
"At least one signature is invalid" After adding stamp in Signed PDF
我需要在签名的 PDF 中添加图章或图像注释,但它给我一个“无效签名”错误,并且在移动此注释后,它给我一个“至少需要验证一个签名”错误。我该如何解决?
我也找到了一个解决方案,但用于 中的文本注释。
它可以很好地处理文本注释,但我无法对图章执行相同的操作。
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(@"D:\11.jpg");
float w = 100;
float h = 100;
iTextSharp.text.Rectangle location = new iTextSharp.text.Rectangle(36, 770 - h, 36 + w, 770);
PdfAnnotation stamp = PdfAnnotation.CreateStamp(stamper.Writer, location, null, "ITEXT");
img.SetAbsolutePosition(0, 0);
PdfContentByte cb = stamper.GetOverContent(1);
PdfAppearance app = cb.CreateAppearance(100, 100);
app.AddImage(img);
stamp.SetAppearance(PdfName.N, app);
stamper.AddAnnotation(stamp, 1);
这个
PdfContentByte cb = stamper.GetOverContent(1);
是导致签名失效的行。
调用stamper.GetOverContent
(或stamper.GetUnderContent
)已经为添加新内容准备了页面内容。这种准备已经被认为是页面内容的改变。由于禁止更改签名 PDF 的页面内容,这会使签名无效。
您仅使用此 PdfContentByte cb
为您的邮票注释创建 PdfAppearance
:
PdfAppearance app = cb.CreateAppearance(100, 100);
幸运的是,您不需要 cb
来创建 PdfAppearance
,还有一个静态 PdfAppearance
方法可以这样做。因此,只需替换
PdfContentByte cb = stamper.GetOverContent(1);
PdfAppearance app = cb.CreateAppearance(100, 100);
来自
PdfAppearance app = PdfAppearance.CreateAppearance(stamper.Writer, 100, 100);
我需要在签名的 PDF 中添加图章或图像注释,但它给我一个“无效签名”错误,并且在移动此注释后,它给我一个“至少需要验证一个签名”错误。我该如何解决?
我也找到了一个解决方案,但用于
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(@"D:\11.jpg");
float w = 100;
float h = 100;
iTextSharp.text.Rectangle location = new iTextSharp.text.Rectangle(36, 770 - h, 36 + w, 770);
PdfAnnotation stamp = PdfAnnotation.CreateStamp(stamper.Writer, location, null, "ITEXT");
img.SetAbsolutePosition(0, 0);
PdfContentByte cb = stamper.GetOverContent(1);
PdfAppearance app = cb.CreateAppearance(100, 100);
app.AddImage(img);
stamp.SetAppearance(PdfName.N, app);
stamper.AddAnnotation(stamp, 1);
这个
PdfContentByte cb = stamper.GetOverContent(1);
是导致签名失效的行。
调用stamper.GetOverContent
(或stamper.GetUnderContent
)已经为添加新内容准备了页面内容。这种准备已经被认为是页面内容的改变。由于禁止更改签名 PDF 的页面内容,这会使签名无效。
您仅使用此 PdfContentByte cb
为您的邮票注释创建 PdfAppearance
:
PdfAppearance app = cb.CreateAppearance(100, 100);
幸运的是,您不需要 cb
来创建 PdfAppearance
,还有一个静态 PdfAppearance
方法可以这样做。因此,只需替换
PdfContentByte cb = stamper.GetOverContent(1);
PdfAppearance app = cb.CreateAppearance(100, 100);
来自
PdfAppearance app = PdfAppearance.CreateAppearance(stamper.Writer, 100, 100);