C#とVB.NETでPDFに画像透かしを追加する方法

PDF は、ファイルのレイアウトや内容が変更されないことを保証する、非常に一般的なファイル形式です。 場合によっては、著者の権利を保護するために、PDF に透かしを追加する必要があります。[Free Spire.PDF for .NET](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-net.html)は、この機能を簡単に実現できます。次に、C#とVB.NETを使用してPDFに画像透かしを追加する詳細な手順とコードを紹介します。

## Free Spire.PDF for .NETをインストールする
### 方法1：[NuGet](https://www.nuget.org/packages/FreeSpire.PDF)を介してFree Spire.PDF for .NETをインストールする
「ツール」>「NuGetパッケージマネージャ」>「パッケージマネージャコンソール」の順に選択し、次のコマンドを実行します。
PM> Install-Package FreeSpire.PDF

### 方法2：プログラムに手動でSpire.pdf.dllファイルを導入する
[Free Spire.PDF for .NET](https://jp.e-iceblue.com/download/free-spire-pdf-for-net.html)をローカルにダウンロードし、解凍してインストールします。インストールが完了したら、Visual Studioを開いて新しいプロジェクトを作成し、右側のソリューションエクスプローラで「参照」を右クリックし、「参照を追加」>「参照」を選択して、インストールパスの下のBINフォルダのdllファイルを見つけ、「OK」をクリックして、プログラムに参照を追加します。

## PDFに画像透かしを追加するための主な手順
* PdfDocument オブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF ファイルをロードします。
* Image.FromFile() メソッドを使用して画像ファイルをロードします。
* ドキュメント内のページをループし、PdfDocument.Pages[] プロパティを介して特定のページを取得します。
* PdfPageBase.BackgroundImage プロパティを使用して、画像を現在のページの背景/透かし画像として設定します。
* PdfPageBase.BackgroundRegion プロパティを使用して画像の位置とサイズを設定します。
* PdfDocument.SaveToFile() メソッドを使用して、ドキュメントを別の PDF ファイルに保存します。

## コード
C#：
```
using Spire.Pdf;
using System.Drawing;

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

            //サンプルPDFドキュメントをロードする
            document.LoadFromFile(@"sample.pdf");

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

            //画像の幅と高さを取得する
            int imgWidth = image.Width;
            int imgHeight = image.Height;

            //ページをループする
            for (int i = 0; i < document.Pages.Count; i++)
            {
                //ページの幅と高さを取得する
                float pageWidth = document.Pages[i].ActualSize.Width;
                float pageHeight = document.Pages[i].ActualSize.Height;

                //背景の不透明度を設定する
                document.Pages[i].BackgroudOpacity = 0.3f;

                //現在のページの背景画像を設定する
                document.Pages[i].BackgroundImage = image;

                //背景画像をページの中央に配置する
                Rectangle rect = new Rectangle((int)(pageWidth - imgWidth) / 2, (int)(pageHeight - imgHeight) / 2, imgWidth, imgHeight);
                document.Pages[i].BackgroundRegion = rect;
            }

            //ドキュメントをファイルに保存する
            document.SaveToFile("result.pdf");
            document.Close();
        }
    }
}

```
VB.NET：
```
Imports Spire.Pdf
Imports System.Drawing
 
Namespace AddImageWatermark
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim document As PdfDocument =  New PdfDocument() 
 
            'サンプルPDFドキュメントをロードする
            document.LoadFromFile("sample.pdf")
 
            '画像を読み込む
            Dim image As Image =  Image.FromFile("logo.png") 
 
            '画像の幅と高さを取得する
            Dim imgWidth As Integer =  image.Width 
            Dim imgHeight As Integer =  image.Height 
 
            'ページをループする
            Dim i As Integer
            For  i = 0 To  document.Pages.Count- 1  Step  i + 1
                'ページの幅と高さを取得する
                Dim pageWidth As single =  document.Pages(i).ActualSize.Width 
                Dim pageHeight As single =  document.Pages(i).ActualSize.Height 
 
                '背景の不透明度を設定する
                document.Pages(i).BackgroudOpacity = 0.3f
 
                '現在のページの背景画像を設定する
                document.Pages(i).BackgroundImage = image
 
                '背景画像をページの中央に配置する
                Dim rect As Rectangle =  New Rectangle(CType((pageWidth - imgWidth) / 2,(Integer)(pageHeight - imgHeight) / 2,imgWidth,imgHeight, Integer)) 
                document.Pages(i).BackgroundRegion = rect
            Next
 
            'ドキュメントをファイルに保存する
            document.SaveToFile("result.pdf")
            document.Close()
        End Sub
    End Class
End Namespace

```
![2022-12-29_104415.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/433080df-8e47-7953-5e29-e70510842bc0.png)