C#でPDFに画像を挿入、置換、削除する方法

画像は、文書を編集する際に最も一般的に使用される要素の1つです。PDF文書は非常に安全であるため、文書を簡単に編集または変更することは困難です。PDF文書に画像を挿入、置換、削除するには、通常、PDF編集ソフトウェアやPDF処理ライブラリを使用する必要があります。
[Free Spire.PDF for .NET](https://jp.e-iceblue.com/download/free-spire-pdf-for-net.html)は、C#で簡単にPDF内の画像の管理を実現できる無料のライブラリで、以下に詳細な説明とサンプルコードを示します。


## Free Spire.PDF for .NETをインストールする
* **方法1**：[NuGet](https://www.nuget.org/packages/FreeSpire.PDF)でFree Spire.PDF for .NETをインストールする
Visual Studioを開いて新しいプロジェクトを作成します。次に、「Solution Explorer」で「References」を右クリックし、「Nuget Manage Packages」を選択します。Free Spire.PDF for .NETを検索してインストールします。

* **方法2**：手動でSpire.Pdf.dllを追加する
[**Free Spire.PDF for .NET**](https://jp.e-iceblue.com/download/free-spire-pdf-for-net.html)をローカルにダウンロードしインストールします。次に、Visual Studioて新しいプロジェクトを作成し、右側の「Solution Explorer」で「References」を右クリックし、「Add Reference」>「Browse」を選択して、インストールパス下のBINフォルダのdllファイルを見つけ、「OK」をクリックして、プログラムに参照を追加します。

## PDF ドキュメントに画像を挿入する
1. `PdfDocument` オブジェクトを作成します。
1. `PdfDocument.Pages.Add()` メ ソ ッ ド を使っ て PDF ページ を追加。
1. `PdfImage.FromFile()` メソッドを使用して、画像を読み込みます。
1. 画像サイズの設定。
1. 画像を描画するための初期位置を設定します。
1. **`PdfPageBase.Canvas.DrawImage()`** メソッドを使用して、ページ上に画像を描画します。
1. `PdfDocument.SaveToFile()` メソッドを使用して、ドキュメントを保存します。

**サンプルC#コード:**
```csharp
using Spire.Pdf;
using Spire.Pdf.Graphics;

namespace InsertImage
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocument オブジェクトを作成する
            PdfDocument pdf = new PdfDocument();

            //ページを追加する
            PdfPageBase page = pdf.Pages.Add();

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

            //画像サイズの設定
            float width = image.Width * 0.70f;
            float height = image.Height * 0.70f;

            //画像を描画するための初期位置を設定する
            float x = 60;
            float y = 30;

            //ページ上に画像を描画する
            page.Canvas.DrawImage(image, x, y, width, height);

            //ドキュメントを保存する
            pdf.SaveToFile("PDFImage.pdf", FileFormat.PDF);
        }
    }
}
```
![AddImageinPDF.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/d700d6d2-b0a4-607b-1f4c-b46249f46ccb.png)


## PDF内の画像を別の画像に置き換える
1. `PdfDocument` オブジェクトを作成します。
1. `PdfDocument.LoadFromFile()` メソッドを使用して、PDF ドキュメントを読み込みます。
1. `PdfDocument.Pages[]` プロパティを使用して、ドキュメントの最初のページを取得します。
1. `PdfImage.FromFile()`メソッドを使用して画像を読み込みます。
1. **`PdfImageHelper`** オブジェクトを作成します。
1. **`PdfImageHelper.GetImagesInfo()`** メソッドを使用して、ページから画像情報を取得します。
1. **`PdfImageHelper.ReplaceImage()`** メソッドを使用して、ページ上の特定の画像を読み込んだ画像に置き換えます。
1. `PdfDocument.SaveToFile()` メソッドを使用して、ドキュメントを保存します。

**サンプルC#コード:**
```csharp
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Utilities;

namespace ReplaceImage
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentオブジェクトを作成する
            PdfDocument pdf = new PdfDocument();

            // PDFファイルを読み込む
            pdf.LoadFromFile("PDFImage.pdf");

            //ドキュメントの最初のページを取得する
            PdfPageBase page = pdf.Pages[0];

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

            // PdfImageHelper オブジェクトを作成します
            PdfImageHelper imageHelper = new PdfImageHelper();
            //ページから画像情報を取得する
            PdfImageInfo[] imageInfo = imageHelper.GetImagesInfo(page);
            //ページ上の最初の画像を、読み込まれた画像で置き換える
            imageHelper.ReplaceImage(imageInfo[0], image);

            //ドキュメントを保存する
            pdf.SaveToFile("ReplaceImage.pdf", FileFormat.PDF);
        }
    }
}
```

![ReplacePDFImage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/d30b79de-6634-cde8-7d86-606615a48e6f.png)


## PDF ドキュメントに画像を削除する
1. `PdfDocument` オブジェクトを作成します。
1. `PdfDocument.LoadFromFile()` メソッドを使用して、PDF ドキュメントを読み込みます。
1. `PdfDocument.Pages[]` プロパティを使用して、ドキュメントの最初のページを取得します。
1. **`PdfPageBase.DeleteImage()`** メソッドを使用して、最初のページにある最初の画像を削除します。
1. `PdfDocument.SaveToFile()` メソッドを使用して、ドキュメントを保存します。


**サンプルC#コード:**
```csharp
using Spire.Pdf;

namespace DeleteImage
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentオブジェクトを作成する
            PdfDocument pdf = new PdfDocument();

            //PDFファイルを読み込む
            pdf.LoadFromFile("PDFImage.pdf");

            //ドキュメントの最初のページを取得する
            PdfPageBase page = pdf.Pages[0];

            //最初のページにある1枚目の写真を削除する
            page.DeleteImage(0);

            //ドキュメントを保存する
            pdf.SaveToFile("DeleteImage.pdf", FileFormat.PDF);
        }
    }
} 
```