这是我如何在Java中使用iText如何添加pdf的页面背景色的后续问题
虽然该问题的答案中给出的建议有效,但这并不是您可以获得的最佳建议。如果我早些时候看过您的原始问题,我将以不同的方式回答。我会建议您使用页面事件,如PageBackgrounds示例中那样。
在此示例中,我为页面1和2创建蓝色背景,为所有后续偶数页面创建灰色背景。参见page_backgrounds.pdf
如何实现的?好吧,使用与我对这个相关问题的回答相同的技术:如何使用iText库5.5.2为整个pdf页面绘制边框
我创建这样的页面事件:
public class Background extends PdfPageEventHelper { @Override public void onEndPage(PdfWriter writer, document document) { int pagenumber = writer.getPageNumber(); if (pagenumber % 2 == 1 && pagenumber != 1) return; PdfContentByte canvas = writer.getDirectContentUnder(); Rectangle rect = document.getPageSize(); canvas.setColorFill(pagenumber < 3 ? baseColor.BLUE : baseColor.LIGHT_GRAY); canvas.rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight()); canvas.fill(); }}如您所见,我首先检查页码。如果它是一个奇数并且不等于1,我什么也不会做。
但是,如果我在第1页或第2页上,或者页码是偶数,则从中获取内容
writer,而从中获取页面尺寸
document。然后,将填充颜色设置为蓝色或浅灰色(取决于页码),然后为覆盖整个页面的矩形构造路径。最后,我用填充颜色填充该矩形。
现在我们有了自定义
Background事件,我们可以像这样使用它:
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));Background event = new Background();writer.setPageEvent(event);
Background如果您需要其他行为,请随时适应课程。



