Как сделать разные поля на страницах itext 7? - PullRequest
0 голосов
/ 09 октября 2018

Например, для четных страниц отступ равен 100, для нечетного - 150. страница №1:

doc.setleftMargin (100);

страница № 2:

doc.setleftMargin (150);

страница № 3:

doc.setleftMargin (150);

страница № 4:

doc.setleftMargin (100);

Не работает:

for (int i = 1; i < 5; i++) {
    if (n % 2==0)
        doc.setLeftMargin(100);
    else if(!(n%2==0))
        doc.setLeftMargin(150);

    doc.getPdfDocument().addNewPage();
    doc.add(pLiga);
    System.out.println(doc.getLeftMargin());
    System.out.println(doc.getPdfDocument().getNumberOfPages());

    n++;
    System.out.println(n);
}

pLiga Добавлено 5 раз

1 Ответ

0 голосов
/ 05 ноября 2018

Вы смешиваете низкоуровневые манипуляции (doc.getPdfDocument().addNewPage()) с высокоуровневыми (например, добавление элементов в Document).Если вы используете высокоуровневый API, постарайтесь придерживаться его как можно больше.Для перехода на новую страницу вы можете использовать doc.add(new AreaBreak());.Также убедитесь, что вы установили поля перед тем, как фактически добавлять контент на новую страницу.

Переписывание вашего кода во что-то вроде следующего работает, как и ожидалось - поля чередуются от страницы к странице:

int n = 0;
for (int i = 0; i < 5; i++) {
    if (n % 2 == 0) {
        doc.setLeftMargin(100);
    } else {
        doc.setLeftMargin(200);
    }

    // Make sure to set margins before adding elements to new page
    if (i > 0) {
        doc.add(new AreaBreak());
    }
    doc.add(new Paragraph("Hello"));

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