如何在拆分页面上添加新行

时间:2018-02-16 17:13:36

标签: itext

我正在使用(在Java中)

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>

我在每页上打印标题,徽标,图片和表格。跟随是代码(一点&#34;伪&#34;):

Document document = new Document( PageSize.A4 );
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream( pdfFullPath ) );
writer.setPageEvent( new HeaderAndFooter() );

    for ( some condition for each page ) {
            document.add( theLogoInLeftTop );     
            document.add( new Paragraph("\n\n\n\n\n") );  <<<-- Will give room for the heder printed by the `setPageEvent`           

            Image thumb = Image.getInstance( theImage );
            float scaler = ((document.getPageSize().getWidth() - document.leftMargin()
                           - document.rightMargin() ) / thumb.getWidth()) * 100;                

            thumb.scalePercent(scaler);
            thumb.setBorder( Image.BOX );
            thumb.setBorderWidth(1);
            document.add( thumb );        

            PdfPTable table = new PdfPTable( new float[] { 1, 3 } );
            table.setTotalWidth( document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin() );
            table.setLockedWidth(true);  


            // Too much rows will cause a page break and will print 
            // the rows over the header.
            for( some or few rows ) {
                table.addCell( someLeftText );
                table.addCell( someRightText );
            }

            document.add(table);            
            document.newPage();
    }

    document.close();
    writer.close();     

当我有几行时,一切都很好,所有内容都打印在一页中。但是当我有很多行时,会启动一个新页面(而不是我的document.newPage())并且行内容会打印在我的标题和徽标上(他们不会在开头时尊重document.add( new Paragraph("\n\n\n\n\n") );每页)。

如何在#34;内容溢出&#34;启动新页面时执行document.add( new Paragraph("\n\n\n\n\n") );所以我可以保存标题空间吗?

徽标也没有打印出来。

这是我的标题创建者(只是为了说明):

public class HeaderAndFooter extends PdfPageEventHelper {

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
      // Printing the headers using
      // ColumnText.showTextAligned

    }

}   

1 个答案:

答案 0 :(得分:1)

解决: 删除所有0 - 52后,我在文档创建时添加了新边距。

无需\n

document.setMargins()