当我签署文档并在签名外观中使用图像时,我得到以下结果:
但是,我希望结果是这样的:
这是我的代码:
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setReason(info.getReason());
appearance.setLocation(info.getLocation());
appearance.setVisibleSignature(t.getRectangle(), 1, "SIGN");
appearance.setSignatureGraphic(image);
appearance.setCertificationLevel(PdfSignatureAppearance.NOT_CERTIFIED);
appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
MakeSignature.signDetached(appearance, digest, signature,chain, null, null, null, 0, MakeSignature.CryptoStandard.CADES);
最佳答案
PDF 文档中数字签名的可视化表示是小部件注释。 小部件注释是一种特定类型的注释。
在 PDF 中,您拥有页面的实际内容。该内容存储在内容流中。页面在页面字典中定义。此页面字典中有一个 /Contents
条目引用多个内容流之一。这些内容流共同包含描述页面内容的语法。
注释不属于任何这些流。使用 /Annots
条目从页面字典中引用注释。在您的情况下,有一个 /Annots
条目引用带有您签名外观的小部件注释。
所有注释都呈现在实际页面内容之上。
长话短说:您有一个包含一些页面内容的 PDF,并且注释的外观添加在该页面内容的顶部。这个是正常的。这如 ISO-32000-1 中所述。您现在要求 PDF 查看器在页面内容下呈现注释。根据 PDF 规范,这是不可能的。
对你的问题的简短回答是:你在问一些无法完成的事情。最接近的解决方案是使图像透明(但这是另一个问题)。
关于java - itext5 在上下文中签署图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47032521/