Alternar entre ColumnDocumentRenderer e DocumentRenderer na mesma página?
Eu estava testando algumas coisas com o iText7 e tenho um cenário em que preciso ter o parágrafo do DocumentRenderer na parte superior e, em seguida, iniciar o ColumnDocumentRender com 2 colunas logo abaixo na mesma página. O problema que estou tendo é que, quando altero o conteúdo na mesma página, ele sobrepõe o conteúdo do DocumentRenderer ao conteúdo do ColumnDocumentRenderer. Eu acredito que é porque uma renderização não sabe sobre a outra renderização e o conteúdo começa na parte superior da página. eu seguieste tutorial mas mostra apenas como adicionar conteúdo à próxima página. Diz
teremos que instruir o iText para não liberar o conteúdo para o OutputStream
Mas alguém pode me mostrar exatamente como podemos conseguir isso?
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
Document document = new Document(pdf);
Paragraph p = new Paragraph()
.add("Be prepared to read a story about a London lawyer "
+ "named Gabriel John Utterson who investigates strange "
+ "occurrences between his old friend, Dr. Henry Jekyll, "
+ "and the evil Edward Hyde.");
document.add(p);
document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
... // Define column areas
document.setRenderer(new ColumnDocumentRenderer(document, columns));
document.add(new AreaBreak(AreaBreakType.LAST_PAGE));
... // Add novel in two columns
document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
document.setRenderer(new DocumentRenderer(document));
document.add(new AreaBreak(AreaBreakType.LAST_PAGE));
p = new Paragraph()
.add("This was the story about the London lawyer "
+ "named Gabriel John Utterson who investigates strange "
+ "occurrences between his old friend, Dr. Henry Jekyll, "
+ "and the evil Edward Hyde. THE END!");
document.add(p);
document.close();
}
Eu preciso de algo assim:
Sempre que você cria um novo DocumentRenderer, o iText inicia retorna ao topo do documento - ou seja: da primeira página. Isso permite que você use diferentes renderizadores no mesmo documento ao lado do outro na mesma página. Se isso for necessário, teremos de instruir o iText para não liberar o conteúdo para o OutputStream; caso contrário, não teremos acesso às páginas anteriores. Nesse caso, não precisamos alterar nada nas páginas anteriores. Nós apenas queremos mudar para outro renderizador na próxima página. A introdução de uma quebra de página que vai para a última página evitará que o novo conteúdo substitua o antigo.