我有一个使用 iTextSharp 生成的 PDF,它在页脚中显示“第 1/4 页”等内容。这一切都很好,并使用在方法PdfTemplate
中设置的 a 以及在OnEndPage()
方法中添加的总页数来实现OnCloseDocument()
。
如果文档中只有一页,我想做的是删除它。我已经在我的OnCloseDocument()
方法中尝试过这个,但它实际上并没有删除模板:
public override void OnCloseDocument(PdfWriter writer, Document document)
{
base.OnCloseDocument(writer, document);
if (writer.PageNumber >= 3)
{
template.BeginText();
template.SetFontAndSize(f_cn, CocService.footerFont.Size);
template.SetTextMatrix(0, 0);
template.ShowText("" + (writer.PageNumber - 1));
template.EndText();
}
else
{
template.Reset();
}
}
仅供参考,以下是该OnEndPage()
方法的相关代码:
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
int pageN = writer.PageNumber;
String text = "Page " + pageN.ToString() + "/";
float len = f_cn.GetWidthPoint(text, CocService.footerFont.Size);
iTextSharp.text.Rectangle pageSize = document.PageSize;
cb.SetRGBColorFill(100, 100, 100);
cb.BeginText();
cb.SetFontAndSize(f_cn, CocService.footerFont.Size);
cb.SetTextMatrix(document.LeftMargin+520, pageSize.GetBottom(document.BottomMargin)+33);
cb.ShowText(text);
cb.EndText();
cb.AddTemplate(template, document.LeftMargin + 520 + len, pageSize.GetBottom(document.BottomMargin)+33);
}