我想创建一个PDF文档在C#中使用iTextSharp 5.0.6。我想分别在OnStartPage和OnEndPage事件的每个页面添加页眉和页脚。PDF页脚在底部使用iTextSharp
在页脚的情况下,有一个问题,页脚是在页面结束的地方创建的,而我想在页面的底部。
iTextSharp是否有方法指定页面高度,以便始终在底部创建页脚。
谢谢!
我想创建一个PDF文档在C#中使用iTextSharp 5.0.6。我想分别在OnStartPage和OnEndPage事件的每个页面添加页眉和页脚。PDF页脚在底部使用iTextSharp
在页脚的情况下,有一个问题,页脚是在页面结束的地方创建的,而我想在页面的底部。
iTextSharp是否有方法指定页面高度,以便始终在底部创建页脚。
谢谢!
页的身高是总是定义:
document.PageSize.Height // document.getPageSize().getHeight() in Java
记住,在PDF 0,0是左下角,和你去正确的和UP协调增长。
在PdfPageEvent中,您需要使用绝对坐标。这听起来像是要从文档中获取当前Y,或者在当前位置获取仅绘制材质。不要这样做。另外,如果您想在每个页面上使用相同的页脚,可以将所有内容都绘制到PdfTemplate中,然后将该模板绘制到您想要的各个页面上。
writer.getDirectContent().addTemplateSimple(footerTmpl, 0, 0);
即使最您的页脚的是一样的,你可以使用这种技术来保存:
PdfTemplate footerTmpl = writer.getDirectContent().createTemplate(0, 0, pageWidth, footerHeight);
footerTmpl.setFontAndSize(someFont, someSize);
footerTmpl.setTextMatrix(x, y);
footer.showText("blah");
// etc
然后在你的PdfPageEvent
,你可以在你的页面的底部添加footerTempl
内存,执行时间和文件大小。此外,如果您不想直接使用PdfContentByte
绘图命令,可以通过ColumnText
在某种程度上避免它们。有几个标有iText或iTextSharp的SO问题处理该类。打开,你会发现他们。
如何访问“getDirectContent()”函数? iTextSharp在编写器对象上似乎没有这样的方法。 – NickG 2013-10-15 09:46:38
@NickG,在C#中,你可以使用'writer.DirectContent'。 – 2013-11-24 22:37:11
文本“blah”仅在chrome中可见。您可以使用BeginText()和EndText()来包围showtext函数,并使其成为如下形式:footer.BeginText(); footer.ShowText(“blah”); footer.EndText(); – 2014-02-11 11:46:15