【发布时间】:2018-04-16 16:05:38
【问题描述】:
我有一个小应用程序可以使用 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 的签名很好,但矩形中的可见符号有一个填充,一个矩形超过了第二个,第二个超过了第三个,等等。 这是示例图像: 存在一种删除此填充并避免一个矩形覆盖另一个矩形的方法。 提前致谢
【问题讨论】:
-
你使用哪个
RenderingMode?在RenderingMode.DESCRIPTION的情况下,所有四个边上的填充都相同,为 2pt,但考虑到屏幕截图中的框架线,您的情况似乎并非如此。话虽如此,矩形是否重叠取决于您如何选择矩形坐标。不幸的是,您也没有为此显示相关代码,setVisibleSignature调用... -
@mkl 我更新了代码。我添加了 RenderingMode.DESCRIPTION 并且矩形重叠仍然存在。
-
已经为
next的相邻值创建了签名?喜欢 1 和 2? -
我不太明白你的问题(我的英语不是很好)。 next 是一个 Integer 来控制符号的顺序。如果没有签名下一个是0,并且矩形写在这个位置,如果有一个1符号(存在一个矩形)我写下一个矩形,依此类推。
-
您在代码中使用了变量
next。您的代码是否创建了两个重叠的签名,并且下一个具有连续值?例如。是否为next == 1创建了最上面的签名,为next == 2创建了较低的签名?