C#でPDF文書に画像を追加、削除、置換する方法 [.NET]

現代のデジタル文書処理のシーンでは、PDF文書内の画像を動的に操作することが、企業向けアプリケーション開発における重要な要件の一つとなっています。C#を使って.NETプラットフォーム上で画像の追加、置換、削除を実現することにより、PDF文書の視覚的な表現力や情報の伝達効率を大幅に向上させるだけでなく、データの動的更新や内容の正確な管理といった複雑な業務シナリオにも対応できます。これにより、PDF文書の専門的な応用分野に強力なサポートを提供することができます。本記事では、.NETプラットフォームで**C#を使ってPDF文書に画像を追加、削除、置換する方法**を紹介します。以下の内容を含みます：

* C#でPDF文書に画像を追加する方法
* C#でPDF文書から画像を削除する方法
* C#でPDF文書内の画像を置換する方法

使用する方法は、[Free Spire.PDF for .NET](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-net.html)ライブラリを使用します。NuGetパッケージのインストール方法：`PM> Install-Package FreeSpire.PDF`。

## C#でPDF文書に画像を追加する方法

ライブラリの`PdfImage.FromFile()`メソッドを使用して画像をファイルから読み込み、`PdfPageBase.Canvas.DrawImage()`メソッドでPDFページの指定位置に画像を描画できます。以下は操作手順です：

1. `PdfDocument`インスタンスを初期化し、PDF文書を新規作成または読み込みます。
2. `PdfDocument.Pages.Add()`メソッドを使って、PDF文書に新しいページを追加します。
3. `PdfImage.FromFile()`メソッドを使って画像を読み込みます。
4. 画像を描画する開始位置を指定します。
5. `PdfPageBase.Canvas.DrawImage()`メソッドで画像をページに描画します。
6. `PdfDocument.SaveToFile()`メソッドでPDF文書を保存します。
7. リソースを解放します。

**コード例**
```python
using Spire.Pdf;
using Spire.Pdf.Graphics;

namespace PDFに画像を追加
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // ドキュメントにページを追加
            PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4, new PdfMargins(20f, 50f));

            // 画像を読み込む
            PdfImage image = PdfImage.FromFile("Image.png");

            // 画像の描画開始位置を指定
            float x = (page.Size.Width - 40f) / 2 - image.Width / 2;
            float y = pdf.PageSettings.Margins.Top + 50;

            // 画像をPDFページに描画
            page.Canvas.DrawImage(image, x, y, image.Width, image.Height);

            // PDFドキュメントを保存
            pdf.SaveToFile("output/InsertImagePDF.pdf");
            pdf.Dispose();
        }
    }
}
```

結果のPDF文書
![C#でPDF文書に画像を追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b8e34563-5f63-4045-a287-347db1569049.png)

## C#でPDF文書から画像を削除する方法

ライブラリの`PdfImageHelper`クラスを使用して、PDFページ上の画像を処理できます。`PdfImageHelper.GetImagesInfo(PdfPageBase)[Index]`メソッドでPDFページの指定画像を取得し、`PdfImageHelper.DeleteImage()`メソッドでその画像を削除します。以下は操作手順です：

1. `PdfDocument`オブジェクトを作成し、`PdfDocument.LoadFromFile()`メソッドでPDF文書を読み込みます。
2. `PdfDocument.Pages[]`プロパティを使って、指定したページを取得します。
3. `PdfImageHelper`インスタンスを作成し、`PdfImageHelper.GetImagesInfo(PdfPageBase)[Index]`メソッドで指定画像を取得します。
4. `PdfImageHelper.DeleteImage()`メソッドで画像を削除します。
5. `PdfDocument.SaveToFile()`メソッドでPDF文書を保存します。
6. リソースを解放します。

**コード例**
```python
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace PDFから画像を削除
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFドキュメントを読み込む
            pdf.LoadFromFile("output/InsertImagePDF.pdf");

            // 画像が含まれるページを取得
            PdfPageBase page = pdf.Pages[0];

            // PdfImageHelperオブジェクトを作成
            PdfImageHelper imageHelper = new PdfImageHelper();

            // ページ内の指定画像の情報を取得
            PdfImageInfo imageInfo = imageHelper.GetImagesInfo(page)[0];

            // 指定画像を削除
            imageHelper.DeleteImage(imageInfo);

            // 削除を示すテキストを描画
            page.Canvas.DrawString("Image deleted.", new PdfFont(PdfFontFamily.Helvetica, 16f), PdfBrushes.Black, new PointF(imageInfo.Bounds.X, imageInfo.Bounds.Y));

            // PDFドキュメントを保存
            pdf.SaveToFile("output/DeleteImagePDF.pdf");
            pdf.Dispose();
        }
    }
}
```

結果のPDF文書
![C#でPDF文書から画像を削除](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/cf36a23e-da43-425f-9fb9-68a4562819c8.png)

## C#でPDF文書内の画像を置換する方法

`PdfImageHelper`クラスには、`ReplaceImage(PdfImageInfo, PdfImage)`メソッドが提供されており、PDFページ上の指定画像を新しい画像に置換できます。以下は操作手順です：

1. `PdfDocument`オブジェクトを作成し、`PdfDocument.LoadFromFile()`メソッドでPDF文書を読み込みます。
2. `PdfDocument.Pages[]`プロパティを使って、指定したページを取得します。
3. `PdfImageHelper`インスタンスを作成し、`PdfImageHelper.GetImagesInfo(PdfPageBase)[Index]`メソッドで指定画像を取得します。
4. `PdfImage.FromFile()`メソッドで新しい画像を読み込みます。
5. `PdfImageHelper.ReplaceImage()`メソッドで、新しい画像に置換します。
6. `PdfDocument.SaveToFile()`メソッドでPDF文書を保存します。
7. リソースを解放します。

**コード例**
```python
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace PDFの画像を置換
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFドキュメントを読み込む
            pdf.LoadFromFile("output/InsertImagePDF.pdf");

            // 画像が含まれるページを取得
            PdfPageBase page = pdf.Pages[0];

            // PdfImageHelperオブジェクトを作成
            PdfImageHelper imageHelper = new PdfImageHelper();
            // ページ内の指定画像の情報を取得
            PdfImageInfo imageInfo = imageHelper.GetImagesInfo(page)[0];

            // 新しい画像を読み込む
            PdfImage newImage = PdfImage.FromFile("G:/Documents/Image3.png");

            // 指定画像を新しい画像に置換
            imageHelper.ReplaceImage(imageInfo, newImage);

            // PDFドキュメントを保存
            pdf.SaveToFile("output/ReplaceImagePDF.pdf");
            pdf.Dispose();
        }
    }
}
```
結果のPDF文書
![C#でPDF文書内の画像を置換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/8b6e7c1c-bf13-4c68-a78b-a9d15048a8a1.png)

本記事では、C#を使用して.NETプラットフォームでPDF文書内に画像を追加、削除、置換する方法を説明し、各手順とコード例を提供しました。