2011-12-05 34 views
3

我使用PdfPTables为我的PDF文档创建了页眉和页脚。我在PdfPageEventHelper的onStartPage和onEndPage事件中分别指定了页眉和页脚。iText5中的页眉重叠

我正面临的问题是在我的文档中添加段落。

当我创建一个新段落如下:

Paragraph content = new Paragraph("This is a test text"); 
try{ 
    pdfDocument.add(content); 
} catch (DocumentException e){ 
    e.printStackTrace(); 
} 

内容与报头重叠。我需要的是在页眉和页脚之间设置段落。有人可以告诉我为了将标题放在页眉和页脚之间而不是它们之间需要做什么。

感谢

回答

1

您需要正确设置页边距:在底部20

Document(Rectangle pageSize, float marginLeft, float marginRight, float marginTop, float marginBottom) 
+0

谢谢。但我在哪里设置边距?页眉后添加了页脚?或之前?另外,在将页眉和页脚添加到文档后边距是否会受到影响?似乎iText没有相对定位的概念。 –

+0

这里您可以在开始处设置页边距:Document document = new Document(PageSize.A4,* margin ... *); – VahidN

4

设置的空白超过所需。 例如一般来说,你不断从底部marging是40

document.setMargins(50, 45, 50, 40); 

现在,请保持60

writer=PdfWriter.getInstance(document, out); 
document.setPageSize(PageSize.A4); 
document.setMargins(50, 45, 50, 60); 
document.setMarginMirroring(false); 

writer.setPageEvent(new HeaderAndFooter()); 
document.open(); 

现在的HeaderFooter PageEvent页脚设置在document.bottom() - 20位。

public class HeaderAndFooter extends PdfPageEventHelper { 
    private Font footerFont; 
    public HeaderAndFooter() { 
     super(); 
     footerFont = getFontObj(BaseColor.LIGHT_GRAY, 15); 
     footerFont.setStyle(Font.ITALIC); 
    } 


    @Override 
    public void onEndPage(PdfWriter writer, Document document) { 
     PdfContentByte cb = writer.getDirectContent(); 
     ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, new Phrase(String.format("Page %d", writer.getPageNumber()),footerFont), (document.left() + document.right())/2 , document.bottom()-20, 0); 
    } 
} 

它将解决重叠的问题。它对我来说工作得很好。

-1

我知道它来不及回答这个问题,但希望如此,这将帮助别人,我也得到了同样的问题:

HeaderFooter类的文件,还有一些类的两个构造函数 1:

HeaderFooter header = new HeaderFooter(new Phrase(chunk), new Phrase("\n\n\n\n")); 

这里new Phrase(chunk)可用于你的头和其他短语与\n donw是重叠将移动文本,但有一个小问题,即它显示在页眉的页码。

为了避免这个问题,我用2号构造:

HeaderFooter header = new HeaderFooter(new Phrase(75f, chunk), false); 

这是更连击的选择,因为在这句话我有块,我需要在标题显示和一起加入的75点上边距还说顶部的页码为假(不),这解决了我的问题。