使用iTextSharp在底部的PDF页脚

时间:2011-03-12 22:44:41

标签: c# pdf .net-4.0 itextsharp

我正在尝试使用iTextSharp 5.0.6在c#中创建一个pdf文档。我想分别为OnStartPage和OnEndPage事件中的每个页面添加页眉和页脚。

如果是页脚,则会出现页脚结束时创建页脚的问题,而我希望位于页面底部。

iTextSharp中是否有指定页面高度的方法,以便始终在底部创建页脚。

谢谢!

1 个答案:

答案 0 :(得分:4)

页面的高度始终定义:

document.PageSize.Height // document.getPageSize().getHeight() in Java

请记住,在PDF 0,0是左下角,当你向右和向上时坐标会增加。

在PdfPageEvent中,您需要使用绝对坐标。听起来你要么从文档中获取当前的Y,要么在当前位置获取Just Drawing Stuff。不要那样做。

此外,如果您想在每个页面上使用相同的页脚,您可以将所有内容绘制到PdfTemplate中,然后将该模板绘制到您想要的各个页面中。

PdfTemplate footerTmpl = writer.getDirectContent().createTemplate( 0, 0, pageWidth, footerHeight );

footerTmpl.setFontAndSize( someFont, someSize );
footerTmpl.setTextMatrix( x, y );
footer.showText("blah");
// etc

然后在您的PdfPageEvent中,您只需在页面底部添加footerTempl即可:

 writer.getDirectContent().addTemplateSimple( footerTmpl, 0, 0 );

即使页脚的大多数相同,您也可以使用此技术来节省内存,执行时间和文件大小。

此外,如果您不想直接使用PdfContentByte绘图命令,可以通过ColumnText在某种程度上避免它们。有一些标有iText或iTextSharp的SO问题处理该类。捅了一下,你会发现它们。