Itextsharp 我使用itext.dll使用ASP.NET生成PDF,我想在文档中添加页脚?
我使用itext.dll生成PDF,我希望文档中有一个页脚,格式如下:Itextsharp 我使用itext.dll使用ASP.NET生成PDF,我想在文档中添加页脚?,itextsharp,Itextsharp,我使用itext.dll生成PDF,我希望文档中有一个页脚,格式如下: Page 1 of 6 HeaderFooter footer = new HeaderFooter(new Phrase("Page"), new Phrase(" of 6")); footer.setBorder(Rectangle.NO_BORDER); footer.setAlignment(Element.ALIGN_CENTER); document.setFo
Page 1 of 6
HeaderFooter footer = new HeaderFooter(new Phrase("Page"), new Phrase(" of 6"));
footer.setBorder(Rectangle.NO_BORDER);
footer.setAlignment(Element.ALIGN_CENTER);
document.setFooter(footer);
这是否可以在不硬编码总页数的情况下实现?即,是否有一种方法可以获取文档中的总页数 我发现有(至少)两种方法可以做到这一点 一种方法是创建不带页脚的文档,然后使用
PdfStamper
在页码上加盖total标记。但是,当我将stampers产品输出到MemoryStream
时,这给我带来了一些问题,而且似乎没有办法在不同时关闭流的情况下关闭stamper
另一种方法是创建一个表示总页数的PdfTemplate
实例,并将其添加到每个页脚或任何需要的地方
接下来,您可以使用自己的PdfPageEventHelper
类并实现OnCloseDocument方法,在该方法中,您可以使用总页数填充模板:
public override void OnCloseDocument(PdfWriter writer, Document document)
{
PageCountTemplate.BeginText();
PageCountTemplate.SetFontAndSize(HeaderFont.BaseFont, HeaderFont.Size);
PageCountTemplate.ShowText((writer.CurrentPageNumber - 1).ToString());
PageCountTemplate.EndText();
}
我个人还使用onpendocument
创建模板,并在每页上编写onedpage
编辑:
为了回答Jan的问题,
OnCloseDocument
在整个文档编写完成后只调用一次。当调用Doc.Close()
时,我的意思是。14个问题,1个可接受的回答…这纯粹是一个iTextSharp问题,因此与ASP.NET没有什么关系。是否会为每个页面调用一个closedocument,还是仅为文档调用一个closedocument?