C#を使用して既存のPDFファイルにページ番号を追加する方法

PDFファイルにページ番号を追加すると、紙のファイルのPDFファイルのページの順序を区別するのに役立ち、それを読んだり管理したりのに便利です。今回は、PDFファイルにページ番号を追加する方法をご紹介します。この方法では、強力なコンポーネントである[Free Spire.PDF for .NET](https://www.e-iceblue.com/Download/download-pdf-for-net-free.html)を使用し、Adobeのソフトウェアをインストールする必要はありません。

## コードの使用：

ステップ１：2つのパラメーターPdfPageCollection（ページ）とPdfMargins（ページマージン）を含むDrawPageNumber（PdfPageCollectioncollection、PdfMargins margin）メソッドを定義します。このメソッドの機能は、PDFページの下部の中央にページ番号を追加するに用います。
```
private static void DrawPageNumber(PdfPageCollectioncollection, PdfMargins margin)
{
    foreach (PdfPageBase page in collection)
    {
        PdfBrush brush = PdfBrushes.Black;
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Bold), true);
        PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
        int x = Convert.ToInt32(page.Canvas.ClientSize.Width / 2);
        int y = Convert.ToInt32(page.Canvas.ClientSize.Height - margin.Bottom);
        Rectangle bounds = new Rectangle(x, y, 50, 20);
        PdfPageNumberField field = new PdfPageNumberField();
        field.Font = font;
        field.Brush = brush;
        field.StringFormat = format;
        field.Bounds = bounds;
        field.Draw(page.Canvas);
    }
}
```
ステップ2：PDFファイルをロードします。
```
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(@"sample.pdf");
```
ステップ3：PDFの余白を設定します。
```
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
```
ステップ4：DrawPageNumber()メソッドを呼び出して、対応するPDFページにページ番号を追加します。
```
DrawPageNumber(doc.Pages, margin);
```
ステップ５：ドキュメントを保存します。
```
doc.SaveToFile("result.pdf", FileFormat.PDF);
```
ページ番号を追加する前：
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/fcc99245-5265-1822-2fca-86f4c30c25bc.png)

ページ番号を追加した後：
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/58d5e320-9b62-6828-b263-0cd9ffd6ad84.png)


## 完全なるコード：

```
using System;
using System.Collections.Generic;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Widget;
using System.Drawing;
using Spire.Pdf.AutomaticFields;

namespace Add_Page_Numbers_to_Existing_PDF_Document
{
    class Program
    {
        private static IEnumerable<PdfPageBase> collection;

        static void Main(string[] args)
        {
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

            PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
            PdfMargins margin = new PdfMargins();
            margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
            margin.Bottom = margin.Top;
            margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
            margin.Right = margin.Left;

            DrawPageNumber(doc.Pages, margin);
            doc.SaveToFile("result.pdf", FileFormat.PDF);
        }
        private static void DrawPageNumber(PdfPage Collectioncollection, PdfMargins margin)
        {
            foreach (PdfPageBase page in collection)
            {
                PdfBrush brush = PdfBrushes.Black;
                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Bold), true);
                PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
                int x = Convert.ToInt32(page.Canvas.ClientSize.Width / 2);
                int y = Convert.ToInt32(page.Canvas.ClientSize.Height - margin.Bottom);
                Rectangle bounds = new Rectangle(x, y, 50, 20);
                PdfPageNumberField field = new PdfPageNumberField();
                field.Font = font;
                field.Brush = brush;
                field.StringFormat = format;
                field.Bounds = bounds;
                field.Draw(page.Canvas);
            }
        }
    }
}
```

今回の既存のPDFファイルにページ番号を追加する方法は以上でした、最後まで読んでいただきありがとうございました。