如何在 itext 7 页面上设置不同的页边距?

How to make a different margin on the pages itext 7?

例如,在偶数页上,缩进为 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次

您将低级操作 (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++;
}