これを行うには(少なくとも)2つの方法があることがわかりました。
1 つは、フッターなしでドキュメントを作成し、その後、PdfStamper
合計でページ番号をスタンプするために使用することです。しかし、スタンパー製品を出力するときにいくつかの問題が発生しMemoryStream
、同時にストリームを閉じずにスタンパーを閉じる方法がないようです。
もう 1 つの方法は、合計ページ数を表す の 1 つのインスタンスを作成し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();
}
私も個人的OnOpenDocument
にテンプレートを作成し、OnEndPage
各ページに書き込むために使用しています。
編集: Jan の質問に答えるにOnCloseDocument
は、ドキュメント全体が作成されたときに 1 回だけ呼び出されます。と呼ばれるときDoc.Close()
、つまり。