Avvolgimento pagina iText: modifica l'ordine degli elementi
Domanda
Sto usando iText per generare report PDF quando ho riscontrato questo problema e ho elaborato un semplice esempio per illustrarlo.
Sto combinando semplici paragrafi e immagini.
L'altezza delle immagini è tale che 3 si adatta a una pagina PDF, ma quando il testo è su una pagina, solo 2 immagini si adattano.
Creo il mio PDF con il seguente codice:
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();
Mi aspetto che l'output assomigli a questo
hello world1
image
image
<page break>
image
hello world2
Invece, quello che ottengo è,
Hello world 1
image
image
hello world 2
<page break>
image
Non sto impostando alcun tipo di parametri di wrapping dispari usando iText, l'esempio è davvero solo uno semplice.
Qualche idea sul motivo per cui sembra esserlo automaticamente in modo errato?
Nel caso reale, l'aggiunta di un'interruzione di pagina non è una soluzione accettabile.
Grazie mille.
Soluzione
Capirlo da solo;)
writer.setStrictImageSequence(true);
In iText è stata una decisione di progettazione non tagliare le immagini in due, ma prima aggiungere altri contenuti.
l'impostazione di questo valore booleano fa sì che iText rispetti l'ordinamento.