在最后一页的末尾,我想打印一个签名。在某些情况下,文档的长度会形成签名,只有签名才能打印到下一页上。当所有报告都在前几页中时,整个页面上只有一个签名是不好的。
有人曾经遇到过这些问题并找到了可行的解决方案吗?
预先感谢
Toutoudakis Michail
答案 0 :(得分:0)
关于第二个问题,请考虑使用setKeepTogether
或setKeepWithNext
方法。
让我们看看这两种方法:
1)setKeepTogether
旨在将容器的子级尽可能地保持在一起。这意味着iText不会拆分容器,除非将容器也不能放置在网页上,否则它将整个容器移动到网页上。
for (int i = 0; i < 28; i++) {
doc.add(new Paragraph("\n"));
}
Div div = new Div();
div.add(new Paragraph("Please, keep me with the next element").setKeepWithNext(true));
div.add(new Paragraph("I don't want to be alone!"));
div.setKeepTogether(true);
doc.add(div);
结果pdf如下所示(请注意,第一页上的“请” paragrapg有足够的空间):
2)setKeepWithNext
旨在将第一个元素的末尾和下一个同胞的开始保留在同一区域。
(!)请注意,这仅适用于高级元素,即添加到根元素的元素。
for (int i = 0; i < 28; i++) {
doc.add(new Paragraph("\n"));
}
doc.add(new Paragraph("Please, keep me with the next element").setKeepWithNext(true));
doc.add(new Paragraph("I don't want to be alone!"));
结果是相同的。
关于你的第一个问题,我真的很想看看你写的是什么。我相信通过使用事件,您将能够实现自己想要的目标。请查看下一个iText示例:特别是https://github.com/itext/i7js-examples/tree/develop/src/test/java/com/itextpdf/samples/sandbox/events和https://github.com/itext/i7js-examples/blob/develop/src/test/java/com/itextpdf/samples/sandbox/events/VariableHeader.java。
对于更智能的布局,我建议您使用Canvas
(因此使用高级api),而不要使用PdfCanvas
(如上述示例)。
还是觉得这是一个不同的问题。