删除矩形的填充在iText的PDF签名(Delete padding of Rectangle in

2019-11-04 17:06发布

我有一个小应用程序添加签名,以利用iText Java中的PDF。 这是代码的片段:

PdfReader           reader  = new PdfReader(pdfBytes);
FileOutputStream    fos     = new FileOutputStream(new File("/home/john/signedPdf.pdf"));
PdfStamper          stamper = PdfStamper.createSignature(
                            reader, 
                            fos, 
                            '\0', 
                            new File("/home/john/"), 
                            true
    );
PdfSignatureAppearance signatureAppearance = stamper.getSignatureAppearance();
signatureAppearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.DESCRIPTION);
Rectangle rectangle = new Rectangle(
                36,
                748 - 20 * (next - 1) ,
                144,
                780 - 20 * (next - 1)
    );
rectangle.normalize();
signatureAppearance.setVisibleSignature(
        rectangle, 
        1, contact);

该PDF签订好,但是在矩形可见星座都有填充和一个矩形获得在第二,和第二克服第三,等等。这是示例图像: 有一种方法来删除此填充和EVIT一个矩形获得超过其他。 提前致谢

Answer 1:

您可以使用像这样创造了你的签名矩形

Rectangle rectangle = new Rectangle(
                36,
                748 - 20 * (next - 1) ,
                144,
                780 - 20 * (next - 1)
    );

其中(如在评论澄清)的整数next可以具有用于签名,例如图1和2的连续值。

但是,这意味着你实际上问重叠签名矩形! 例如,对于为值1和2,您可以获得:

  • next == 1 -矩形顶Y:780; 矩形底部Y:748
  • next == 2 -矩形顶Y:760; 矩形底部Y:728

因此,这些矩形为760和748之间ÿ重叠。

如果你不想让你的矩形重叠时,Y步长因子(目前为20)必须至少为顶部和底部y坐标起点值之间的差异一样大(目前780 - 748 = 32)。

例如,你可以使用的32步长因子

Rectangle rectangle = new Rectangle(
                36,
                748 - 32 * (next - 1) ,
                144,
                780 - 32 * (next - 1)
    );

或20的矩形高度

Rectangle rectangle = new Rectangle(
                36,
                760 - 20 * (next - 1) ,
                144,
                780 - 20 * (next - 1)
    );

而非目前的矩形尺寸和位置。



文章来源: Delete padding of Rectangle in iText PDF signature