LayoutResult более одной страницы в Itext7 - PullRequest
0 голосов
/ 29 мая 2019

Я спрашиваю это: Удалите свойства первой и последней строк в статье Itext7

и если я сделаю это:

 PdfWriter pdfWriter = new PdfWriter(dest);


    PdfDocument pdfDoc = new PdfDocument(pdfWriter);
    Div div = new Div();
    Document doc = new Document(pdfDoc, PageSize.A5);
    doc.setMargins(0,0,0,36);

    for (int i = 0; i <50 ; i++) {
        ListItem listItem = new ListItem();
        String s= "hello "+i;
        Paragraph p = new Paragraph();
        for (int j = 0; j <s.length() ; j++) {


            p.add("HELLO " +I);


        }


  LayoutResult result = div.createRendererSubTree().setParent(doc.getRenderer()).layout(new LayoutContext(new LayoutArea(0,PageSize.A5)));


List<IRenderer> childRendererParagraph = result.getSplitRenderer().getChildRenderers();

childRendererParagraph содержит абзацы только с первой страницы. И я не знаю, сколько страниц будет в pdf

1 Ответ

1 голос
/ 30 мая 2019

Как я уже упоминал в ответе на ваш предыдущий вопрос,

split рендеринг представляет часть контента, которую iText может разместить в области, overflow - контент, который переполняется.

Таким образом, если вы хотите расположить остальную часть содержимого, вы можете выполнить ту же операцию (layout) на вашем overflowRenderer.

Код выглядит следующим образом:

    LayoutResult firstPageResult = div.createRendererSubTree().setParent(doc.getRenderer()).layout(new LayoutContext(new LayoutArea(0, PageSize.A5)));
    LayoutResult secondPageResult  = firstPageResult.getOverflowRenderer().layout(new LayoutContext(new LayoutArea(1, PageSize.A5)));

Как только содержимое будет полностью размещено, overflowRenderer будет иметь значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...