gpt4 book ai didi

java - 删除 iText PDF 签名中矩形的填充

转载 作者:行者123 更新时间:2023-12-02 11:21:48 25 4
gpt4 key购买 nike

我有一个小应用程序,可以使用 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 签名良好,但矩形中的可见符号有填充,并且一个矩形覆盖第二个矩形,第二个矩形覆盖第三个矩形,依此类推。这是示例图像: enter image description here enter image description here存在一种方法来删除此填充并消除一个矩形覆盖其他矩形。提前致谢

最佳答案

您可以使用这样创建的矩形作为签名

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

如果您不希望矩形重叠,则 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)
);

而不是当前的矩形尺寸和位置。

关于java - 删除 iText PDF 签名中矩形的填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49861696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com