C#  PDFでダイナミックスタンプを追加　

<p><strong>ダイナミックスタンプ（Dynamic Stamp）はコンピューターのユーザー情報パネルから情報を取得して、ユーザーと日付などの情報を表示できる動的なスタンです。今日はSpire.PDFという無料で使いやすいライブラリを利用してPDFでダイナミックスタンプを作成する方法を紹介します。</strong></p>
<h4><strong>下準備</strong></h4>
<p><strong>1.E-iceblueの公式サイトから<a href="https://www.e-iceblue.com/Download/download-pdf-for-net-free.html">Free Spire.PDF</a>無料版をダウンロードしてください。</strong></p>
<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210729/20210729160327.png" alt="f:id:lendoris:20210729160327p:plain" width="526" height="230" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<p><strong>2.Visual Studioを起動して新規プロジェクトを作成してから、インストールされたファイルにあった相応しいSpire. PDF.dllを参照に追加してください。</strong></p>
<p><strong>（Net 4.0を例としたら、デフォルトパスは“Bin→NET4.0→PDF.dll”というようです。）</strong></p>
<p><strong> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210729/20210729160335.png" alt="f:id:lendoris:20210729160335p:plain" width="289" height="207" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></strong></p>
```c#
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Annotations.Appearance;
using Spire.Pdf.Graphics;

namespace ConsoleApp8
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocument obejctを作成します。
            PdfDocument doc = new PdfDocument();

            //PDFをロードします。
            doc.LoadFromFile(@"C:\Users\Administrator.SD-20151030NEMY\Desktop\java输出\吾輩.pdf");

            //スタンプを作成するページを取得します。
            PdfPageBase page = doc.Pages[4];

            //テンプレートオブジェクトを作成します。
            PdfTemplate template = new PdfTemplate(180, 50);

            //フォントを設定します。
            PdfCjkStandardFont font1 = new PdfCjkStandardFont(PdfCjkFontFamily.SinoTypeSongLight, 16f, PdfFontStyle.Bold | PdfFontStyle.Italic);
            PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("ms mincho", 10f), true);

            //ソリッドブラシとグラデーションブラシを作成します。

            PdfSolidBrush brush = new PdfSolidBrush(Color.Purple);
            RectangleF rect = new RectangleF(new PointF(0, 0), template.Size);
            PdfLinearGradientBrush gradientBrush = new PdfLinearGradientBrush(rect, Color.White, Color.LightBlue, PdfLinearGradientMode.Horizontal);

            //角丸長方形のパスを作成します。

            int CornerRadius = 10;
            PdfPath path = new PdfPath();
            path.AddArc(template.GetBounds().X, template.GetBounds().Y, CornerRadius, CornerRadius, 180, 90);
            path.AddArc(template.GetBounds().X + template.Width - CornerRadius, template.GetBounds().Y, CornerRadius, CornerRadius, 270, 90);
            path.AddArc(template.GetBounds().X + template.Width - CornerRadius, template.GetBounds().Y + template.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
            path.AddArc(template.GetBounds().X, template.GetBounds().Y + template.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
            path.AddLine(template.GetBounds().X, template.GetBounds().Y + template.Height - CornerRadius, template.GetBounds().X, template.GetBounds().Y + CornerRadius / 2);

            // テンプレートで角丸長方形のパスを描き、グラデーションで塗りつぶします。
            template.Graphics.DrawPath(gradientBrush, path);

            //テンプレートで角丸長方形のパスを描き、紫色でパスを塗りつぶします。

            template.Graphics.DrawPath(PdfPens.Purple, path);

            //テンプレートでテキスト、ユーザー名と日付を描きます。
            String s1 = "検証済みです。";
            String s2 = System.Environment.UserName + " " + DateTime.Now.ToString("F");
            template.Graphics.DrawString(s1, font1, brush, new PointF(5, 5));
            template.Graphics.DrawString(s2, font2, brush, new PointF(2, 28));

            //PdfRubberStampAnnotationオブジェクトを作成し、そのサイズを設定します。
            PdfRubberStampAnnotation stamp = new PdfRubberStampAnnotation(new RectangleF(new PointF(page.ActualSize.Width - 250, 200), template.Size));

            //PdfApperanceオブジェクトを作成し、テンプレートをnormalにします。
            PdfAppearance apprearance = new PdfAppearance(stamp);
            apprearance.Normal = template;

            //スタンプでPdfApperanceオブジェクトを適用します。
            stamp.Appearance = apprearance;

            //スタンプをPdfAnnotationに追加します。
            page.AnnotationsWidget.Add(stamp);

            //保存します。
            doc.SaveToFile("output.pdf", FileFormat.PDF);

        }
    }
```
<h4><strong>実行結果</strong></h4>
<p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/lendoris/20210729/20210729160449.png" alt="f:id:lendoris:20210729160449p:plain" width="554" height="521" loading="lazy" title="" class="hatena-fotolife" itemprop="image" /></p>
<p><strong> </strong></p>