阅读您的问题,似乎很明显您需要页面事件。您的尝试只会添加一次边框,而您可能想在每个页面上添加一个边框。
请看一下PageBorder示例。在此示例中,您将找到PageEvents名为的接口的实现RedBorder:
public class RedBorder extends PdfPageEventHelper { @Override public void onEndPage(PdfWriter writer, document document) { PdfContentByte canvas = writer.getDirectContent(); Rectangle rect = document.getPageSize(); rect.setBorder(Rectangle.BOX); // left, right, top, bottom border rect.setBorderWidth(5); // a width of 5 user units rect.setBorderColor(baseColor.RED); // a red border rect.setUseVariableBorders(true); // the full width will be visible canvas.rectangle(rect); }}onEndPage()每次页面结束时都会自动触发该方法(请勿使用该onStartPage()方法添加内容)。
在此方法的实现中,我们要求document对象提供其当前页面大小。请注意,document传递给事件的实例的类型为Pdfdocument。它不为在所使用的相同的文档createPdf()的方法。
我们根据需要调整矩形。我们将边框设置BOX为要在左侧,右侧,顶部和底部添加边框。我们定义边框的宽度(在本例中为5个用户单位),并定义颜色。
如果在此停下来,将绘制一个边框,边框为5个用户单位,但您只能看到2.5个用户单位的行,因为5个用户单位的另一半将位于页面的可见区域之外。
您可以通过使用10个用户单位的宽度或将变量borders标志设置为来避免这种情况true。
现在,我们要做的就是将rect对象传递给rectangle()方法。此方法与您使用的同名方法有所不同,因为它还会描边矩形。



