Java 删除每页第一行的FixedLeading

Java 删除每页第一行的FixedLeading,java,itext,itext7,Java,Itext,Itext7,我想删除每页第一行的setFixedLeading(100+) 我读了一点文字(有帮助的时候有100多页)。我将padding和margin设置为0,但仍然有顶部缩进。为什么?请帮帮我好吗?如何删除它 public static final String DEST = "PDF.pdf"; public static void main(String[] args) throws FileNotFoundException { PdfDocument pdfDoc

我想删除每页第一行的
setFixedLeading
(100+)

我读了一点文字(有帮助的时候有100多页)。我将padding和margin设置为0,但仍然有顶部缩进。为什么?请帮帮我好吗?如何删除它

public static final String DEST = "PDF.pdf";
public static void main(String[] args) throws FileNotFoundException {

    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
    Document doc = new Document(pdfDoc);
    doc.setMargins(0,0,0,0);
    for (int i = 0; i <20 ; i++) {
        Paragraph element = new Paragraph("p " + i);
        element.setPadding(0);
        element.setMargin(0);
        element.setFixedLeading(55);
        doc.add(element);
    }
    doc.close();

}
公共静态最终字符串DEST=“PDF.PDF”; 公共静态void main(字符串[]args)引发FileNotFoundException{ PdfDocument pdfDoc=新PdfDocument(新PdfWriter(DEST)); 单据单据=新单据(pdfDoc); 文件设置边距(0,0,0,0);
对于(int i=0;i在创建元素时,您不知道它将在哪个页面上结束,也不知道它的结果位置。我认为没有一个属性允许您根据它是否是页面上的顶部元素来配置行为(这样的属性太过自定义,并且与特定的工作流绑定)

幸运的是,布局机制非常灵活,您可以在几行代码中实现所需的行为

首先,我们不要使用
setFixedLeading
,而是为所有段落设置上边距:

Document doc = new Document(pdfDocument);
doc.setMargins(0, 0, 0, 0);
for (int i = 0; i < 20; i++) {
    Paragraph element = new Paragraph("p " + i);
    element.setPadding(0);
    element.setMargin(0);
    element.setMarginTop(50);
    doc.add(element);
}
doc.close();
现在,我们只需将自定义渲染器实例设置为循环中的每个段落:

element.setNextRenderer(new CustomParagraphRenderer(element, doc));
视觉效果:


谢谢,但是当我使用setFixedLeading时,字母的高度会被考虑在内,但是如果边距没有考虑在内,我能以某种方式修复它吗?–gafebLive 12分钟ag
element.setNextRenderer(new CustomParagraphRenderer(element, doc));