チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.PDF for .NET»ページの設定»C# で PDF にページ番号を追加するステップガイド
2026-01-23

C# で PDF にページ番号を追加するステップガイド

既存の 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における座標系を示す画像です。

Spire.PDFの座標系

ページ番号は通常、ヘッダーまたはフッターに配置します。そのため、ページサイズや余白を考慮しながら、描画位置(特に X 座標)を調整する必要があります。

本記事で紹介する左寄せ・中央揃え・右寄せの違いは、すべて X 座標の計算方法の違いによって実現します。

C#でPDFにページ番号を追加する

まずは、ページ番号を追加するための共通的な実装を確認します。

Spire.PDF for .NET では、以下のクラスを使用します。

  • PdfPageNumberField:現在のページ番号を表します。
  • PdfPageCountField:総ページ数を表します。
  • PdfCompositeField:文字列とフィールドを組み合わせて表示します。

これらを組み合わせることで、「X ページ/全 Y ページ」という形式のページ番号を作成できます。

基本処理の流れ

  1. PdfDocument オブジェクトを作成します。
  2. LoadFromFile() メソッドで既存の PDF を読み込みます。
  3. フォントやブラシを設定します。
  4. PdfPageNumberFieldPdfPageCountField を作成します。
  5. PdfCompositeField を使用して表示形式を定義します。
  6. 各ページをループ処理し、指定位置にページ番号を描画します。
  7. 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ファイル

この共通処理をベースに、次の章では配置方法ごとの違いを説明します。

新しい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 日間の試用ライセンスを申請できます。詳細は公式サイトをご確認ください。

Read 9 times