views:

672

answers:

2

I'm using iText to generate PDF reports - came across this issue, and worked up a simple example to illustrate it.

I'm combining simple paragraphs, and images.

The height of the images is such that 3 will fit on a PDF page, but when if text is on a page, only 2 images will fit.

I create my iText PDF like so

 Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);
 PdfWriter writer = PdfWriter.getInstance(document, fileOutput);
 document.open();
 document.add(new Paragraph("hello world1"));
 addImage(document);
 addImage(document);
 addImage(document);
 document.add(new Paragraph("hello world2"));
 document.close();

I expect the output to look like this

hello world1
image
image
<page break>
image
hello world2

Instead, what I get is,

Hello world 1
image
image
hello world 2
<page break>
image

I'm not setting any sort of odd wrapping parameters using iText, the example really is just a simple one.

Any ideas on why it seems to be auto-wrapping this incorrectly?

In the real case, just adding a page break is not an acceptable solution.

Thanks very much.

+3  A: 

Figure it out myself ;)

writer.setStrictImageSequence(true);

It was a design decision in iText to not cut images in two, instead it adds other content first.

setting this boolean causes iText to respect the ordering.

A: 

Thanks for this answer. It makes me fix my issue quickly !

vintz72