简体   繁体   English

如何在页面 itext 7 上制作不同的边距?

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

For example, on even pages, the indent is 100, on odd indentation - 150. page #1:例如,偶数页缩进为 100,奇数缩进为 150。第 1 页:

doc.setleftMargin(100); doc.setleftMargin(100);

page #2:第2页:

doc.setleftMargin(150); doc.setleftMargin(150);

page #3:第 3 页:

doc.setleftMargin(150); doc.setleftMargin(150);

page #4:第 4 页:

doc.setleftMargin(100); doc.setleftMargin(100);

This does not work:这不起作用:

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 Added 5 times pLiga 增加了 5 次

You are mixing low-level manipulations ( doc.getPdfDocument().addNewPage() ) with high-level ones (eg adding elements to Document ).您将低级操作( doc.getPdfDocument().addNewPage() )与高级操作(例如向Document添加元素)混合。 If you are using high-level API, you should try to stick with it as much as possible.如果您正在使用高级 API,则应尽量坚持使用它。 To go to a new page you can use doc.add(new AreaBreak());要转到新页面,您可以使用doc.add(new AreaBreak()); . . Also be sure to set margins before actually adding any content to a new page.还要确保在将任何内容实际添加到新页面之前设置边距。

Rewriting your code into something like following works as expected - margins are alternating from page to page:将您的代码重写为以下内容,按预期工作 - 页边距在页面之间交替:

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++;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM