既存の PDF ドキュメントにページ番号を追加することは、資料の可読性や実用性を高めるうえで非常に重要です。レポートやマニュアル、帳票など、複数ページにわたる PDF では、ページ番号があることで閲覧・管理が格段にしやすくなります。
本記事では、Spire.PDF for .NET を使用して、C# から既存の PDF にページ番号を追加する方法を解説します。左寄せ・中央揃え・右寄せといった配置の違いを、PDF の座標系とあわせて分かりやすく説明します。
目次
Spire.PDF for .NET のインストール
はじめに、Spire.PDF for .NET を .NET プロジェクトに追加します。Spire.PDF for .NET を手動でダウンロードし、DLL を参照に追加するか、NuGet を使用してインストールできます。以下は NuGet インストールコードです。
PM> Install-Package Spire.PDF
インストールが完了したら、PDF 操作に必要なクラスを使用できるようになります。
PDF の座標系とページ番号の配置
Spire.PDF for .NET で PDF を操作する際は、座標系の考え方を理解しておくことが重要です。
- 原点(0,0)は ページの左上 にあります。
- X 軸は右方向に増加します。
- Y 軸は下方向に増加します。
以下は、Spire.PDFにおける座標系を示す画像です。

ページ番号は通常、ヘッダーまたはフッターに配置します。そのため、ページサイズや余白を考慮しながら、描画位置(特に X 座標)を調整する必要があります。
本記事で紹介する左寄せ・中央揃え・右寄せの違いは、すべて X 座標の計算方法の違いによって実現します。
C#でPDFにページ番号を追加する
まずは、ページ番号を追加するための共通的な実装を確認します。
Spire.PDF for .NET では、以下のクラスを使用します。
- PdfPageNumberField:現在のページ番号を表します。
- PdfPageCountField:総ページ数を表します。
- PdfCompositeField:文字列とフィールドを組み合わせて表示します。
これらを組み合わせることで、「X ページ/全 Y ページ」という形式のページ番号を作成できます。
基本処理の流れ
- PdfDocument オブジェクトを作成します。
- LoadFromFile() メソッドで既存の PDF を読み込みます。
- フォントやブラシを設定します。
- PdfPageNumberField と PdfPageCountField を作成します。
- PdfCompositeField を使用して表示形式を定義します。
- 各ページをループ処理し、指定位置にページ番号を描画します。
- PDF を保存します。
PDFのページの左隅にページ番号を追加するC#コード例
using Spire.Pdf;
using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace AddPageNumbers
{
class Program
{
static void Main(string[] args)
{
// 1. PDF ドキュメントを読み込む
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("Sample.pdf");
// 2. ページ番号用のフォントと描画スタイルを定義
PdfTrueTypeFont font = new PdfTrueTypeFont(
new Font("Yu Gothic UI", 12, FontStyle.Regular), true);
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 1.0f);
// 3. ページ番号と総ページ数のフィールドを作成
PdfPageNumberField pageNumberField = new PdfPageNumberField();
PdfPageCountField pageCountField = new PdfPageCountField();
// 4. 表示形式を定義(例:1 ページ/全 10 ページ)
PdfCompositeField compositeField = new PdfCompositeField(
font, brush, "{0} ページ/全 {1} ページ",
pageNumberField, pageCountField);
// 5. ページ番号の描画位置
SizeF pageSize = doc.Pages[0].Size;
compositeField.Location = new PointF(72, pageSize.Height - 45);
// 6. 各ページにページ番号を描画
for (int i = 0; i < doc.Pages.Count; i++)
{
PdfPageBase page = doc.Pages[i];
// 補助線(フッターの区切り線)
page.Canvas.DrawLine(
pen, 72, pageSize.Height - 50,
pageSize.Width - 72, pageSize.Height - 50);
compositeField.Draw(page.Canvas);
}
// 7. PDF を保存
doc.SaveToFile("AddPageNumbers.pdf");
doc.Dispose();
}
}
}
以下は、ページ番号付きの生成済みPDFファイルのプレビューです。

この共通処理をベースに、次の章では配置方法ごとの違いを説明します。
新しいPDF文書を作成し、そこにページ番号を追加したい場合は、「C#でPDF文書を作成する方法」も併せてご確認ください。
ページ番号の配置方法
左寄せでページ番号を配置する
左寄せの場合は、X 座標を固定値に設定します。これにより、すべてのページで左端から一定の位置にページ番号が表示されます。
compositeField.Location = new PointF(72, pageSize.Height - 45);
この方法は、帳票やビジネス文書など、レイアウトが厳密に決まっている PDF に適しています。
中央揃えでページ番号を配置する
中央揃えにする場合は、ページ番号文字列の幅を動的に計算する必要があります。
SizeF pageNumberSize = font.MeasureString(
string.Format("{0} ページ/全 {1} ページ", i + 1, doc.Pages.Count));
compositeField.Location = new PointF(
(pageSize.Width - pageNumberSize.Width) / 2,
pageSize.Height - 45);
ページ幅から文字列幅を引き、その半分を X 座標として指定することで、正確に中央配置できます。
右寄せでページ番号を配置する
右寄せの場合も文字列幅を考慮します。ページの右端から余白分を引いた位置に配置します。
SizeF pageNumberSize = font.MeasureString(
string.Format("{0} ページ/全 {1} ページ", i + 1, doc.Pages.Count));
compositeField.Location = new PointF(
pageSize.Width - pageNumberSize.Width - 72,
pageSize.Height - 45);
この方法は、書籍や報告書など、右下にページ番号を配置したい場合によく使用されます。
まとめ
本記事では、Spire.PDF for .NET を使用して、C# から既存の PDF にページ番号を追加する方法を解説しました。
- PdfCompositeField を使用することで、「X ページ/全 Y ページ」の形式を簡単に実現できます。
- ページ番号の配置は、X 座標の計算方法を変えるだけで制御できます。
- PDF の座標系を理解することで、柔軟なレイアウト調整が可能になります。
用途に応じて、左寄せ・中央揃え・右寄せを使い分けてみてください。
一時ライセンスについて
評価版の制限や透かしを解除したい場合は、30 日間の試用ライセンスを申請できます。詳細は公式サイトをご確認ください。






