如何添加没有边距空间的页面背景颜色itext 5

时间:2016-12-22 14:01:52

标签: itext

我正在尝试为页面添加背景颜色。 我的页面尺寸为1/3英寸,页面顶部,左侧,右侧。底部边距为1英寸。

Rectangle a4 = PageSize.A4;
a4.setBackgroundColor(BaseColor.CYAN);
Document document = new Document(a4,24,24,24,72);

背景颜色适用于所有页面。我想将它应用于页面内容,不包括边距空间。

1 个答案:

答案 0 :(得分:1)

您需要使用PdfPageEvent来实现这一目标。看看这个问题的答案:Change the color of pdf pages alternatively using iText pdf in java

在此示例中,我们创建了一个覆盖整页的彩色背景:

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();
    }
}

现在让我们改编一下这个例子:

public class Background extends PdfPageEventHelper {
    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        PdfContentByte canvas = writer.getDirectContentUnder();
        Rectangle rect = document.getPageSize();
        canvas.setColorFill(BaseColor.BLUE);
        canvas.rectangle(rect.getLeft() + 36, rect.getBottom() + 36, rect.getWidth() - 72, rect.getHeight() - 72);
        canvas.fill();
    }
}

通过更改rectangle()方法的参数,我们在每一方都引入了36个用户单位的边距。

显然,您需要将页面事件声明为PdfWriter

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
Background event = new Background();
writer.setPageEvent(event);