我正在使用(在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
}
}
答案 0 :(得分:1)
解决:
删除所有0 - 52
后,我在文档创建时添加了新边距。
无需\n
document.setMargins()