I'm creating report based on client activity. I'm creating this report with the help of the iText PDF library. I want to create the first two pages with a blue background color (for product name and disclaimer notes) and the remaining pages in white (without a background color). I colored two pages at the very beginning of report with blue using following code.
Rectangle pageSize = new Rectangle(PageSize.A4);
pageSize.setBackgroundColor(new BaseColor(84, 141, 212));
Document document = new Document( pageSize );
But when I move to 3rd page using document.newpage()
, the page is still in blue.
I can't change the color of 3rd page. I want to change the color of 3rd page onward to white.
How can I do this using iText?
This is a follow-up question of How can I add page background color of pdf using iText in java
While the advice given in the answer to that question works, it's not the best advice you could get. If I had seen your original question earlier, I would have answered it differently. I would have recommended you to use page events, as is done in the PageBackgrounds example.
In this example, I create a blue background for page 1 and 2, and a grey background for all the subsequent even pages. See page_backgrounds.pdf
How is this achieved? Well, using the same technique as used in my answer to this related question: How to draw border for whole pdf pages using iText library 5.5.2
I create a page event like this:
As you can see, I first check for the page number. If it's an odd number and if it's not equal to 1, I don't do anything.
However, if I'm on page 1 or 2, or if the page number is even, I get the content from the
writer
, and I get the dimension of the page from thedocument
. I then set the fill color to either blue or light gray (depending on the page number), and I construct the path for a rectangle that covers the complete page. Finally, I fill that rectangle with the fill color.Now that we've got our custom
Background
event, we can use it like this:Feel free to adapt the
Background
class if you need a different behavior.