Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iText create document with unequal page sizes

I want to create a pdf file using itext that has unequal page sizes. I have these two rectangles:

Rectangle one=new Rectangle(70,140);
 Rectangle two=new Rectangle(700,400);

and i am writing to the pdf like this :

Document document = new Document();
  PdfWriter writer=  PdfWriter.getInstance(document, new FileOutputStream(("MYpdf.pdf")));

when I create the document, I have the option to specify the page size , but I want different page sizes for different pages in my pdf. Is it possible to do that ?

Eg. The first page will have rectangle one as the page size, and the second page will have rectangle two as the page size.

like image 600
harveyslash Avatar asked Dec 08 '22 08:12

harveyslash


1 Answers

I've created an UnequalPages example for you that shows how it works:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
Rectangle one = new Rectangle(70,140);
Rectangle two = new Rectangle(700,400);
document.setPageSize(one);
document.setMargins(2, 2, 2, 2);
document.open();
Paragraph p = new Paragraph("Hi");
document.add(p);
document.setPageSize(two);
document.setMargins(20, 20, 20, 20);
document.newPage();
document.add(p);
document.close();

It is important to change the page size (and margins) before the page is initialized. The first page is initialized when you open() the document, all following pages are initialized when a newPage() occurs. A new page can be triggered explicitly (using the newPage() method in your code) or implicitly (by iText, when a page was full and a new page is needed).

like image 119
Bruno Lowagie Avatar answered Dec 10 '22 20:12

Bruno Lowagie