フッターに「ページ1/4」などを表示するiTextSharpを使用して生成されたPDFがあります。これはすべて正常に機能し、メソッドに追加されたページの総数でメソッドにPdfTemplate
設定されたを使用して実装されます。OnEndPage()
OnCloseDocument()
ドキュメントに1ページしかない場合は、これを削除したいと思います。私は自分の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);
}