チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.PDF for .NET»フォームフィールド»C#:PDF で記入可能なフォームを作成、記入、削除する方法
2024-09-29

C#:PDF で記入可能なフォームを作成、記入、削除する方法

印刷せずにエンドユーザーが直接入力できる PDF フォームを作成する機能は、ビジネスの効率化に大きなメリットをもたらします。ユーザーはこれらの書類をダウンロードし、入力して保存し、再度送信することができます。印刷やスキャンの手間が不要です。このガイドでは、C# で Spire.PDF for .NET を使用して、PDF に入力可能なフォームを作成、入力、または削除する方法について説明します。

Spire.PDF for .NET は、Spire.Pdf.Fields 名前空間に一連の便利なクラスを提供しており、テキストボックス、チェックボックス、コンボボックス、リストボックス、ラジオボタンなど、さまざまな種類のフォームフィールドを作成・編集できます。以下の表に、このチュートリアルで使用する主要なクラスを示します。

クラス 説明
PdfForm PDF 文書のインタラクティブフォームを表します。
PdfField PDF 文書のインタラクティブフォームのフィールドを表します。
PdfTextBoxField PDF フォームのテキストボックスフィールドを表します。
PdfCheckBoxField PDF フォームのチェックボックスフィールドを表します。
PdfComboBoxField PDF フォームのコンボボックスフィールドを表します。
PdfListBoxField PDF フォームのリストボックスフィールドを表します。
PdfListFieldItem リストフィールドの項目を表します。
PdfRadioButtonListField PDF フォームのラジオボタンフィールドを表します。
PdfRadioButtonListItem ラジオボタンリストの項目を表します。
PdfButtonField PDF フォームのボタンフィールドを表します。
PdfSignatureField PDF フォームの署名フィールドを表します。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PDF 文書に入力可能なフォームフィールドを作成

PDF フォームを作成するには、対応するフィールドクラスのインスタンスを初期化し、Bounds プロパティを使用してフィールドのサイズと位置を設定し、PdfFormFieldCollection.Add() メソッドを使用して PDF に追加します。Spire.PDF for .NET を使用して PDF 文書にさまざまなタイプのフォームフィールドを作成する手順は以下のとおりです。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.Pages.Add() メソッドを使用してページを追加します。
  • PdfTextBoxField オブジェクトを作成し、Bounds、フォント、テキストなどのプロパティを設定してから、PdfFormFieldCollection.Add() メソッドを使用して文書に追加します。
  • チェックボックス、コンボボックス、リストボックス、ラジオボタン、署名フィールド、ボタンを追加するために、ステップ3を繰り返します。
  • PdfDocument.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Fields;
using Spire.Pdf.Graphics;
using System.Drawing;

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

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

            //x座標とy座標を初期化
            float baseX = 100;
            float baseY = 30;

            //2つのブラシオブジェクトを作成
            PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.Blue));
            PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.Black));

            //フォントを作成
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", 12f, FontStyle.Regular), true);

            //テキストボックスを追加
            page.Canvas.DrawString("テキストボックス:", font, brush1, new PointF(10, baseY));
            RectangleF tbxBounds = new RectangleF(baseX, baseY, 150, 15);
            PdfTextBoxField textBox = new PdfTextBoxField(page, "textbox");
            textBox.Bounds = tbxBounds;
            textBox.Text = "Hello World";
            textBox.Font = font;
            doc.Form.Fields.Add(textBox);
            baseY += 25;

            //2つのチェックボックスを追加
            page.Canvas.DrawString("チェックボックス:", font, brush1, new PointF(10, baseY));
            RectangleF checkboxBound1 = new RectangleF(baseX, baseY, 15, 15);
            PdfCheckBoxField checkBoxField1 = new PdfCheckBoxField(page, "checkbox1");
            checkBoxField1.Bounds = checkboxBound1;
            checkBoxField1.Checked = false;
            page.Canvas.DrawString("オプション 1", font, brush2, new PointF(baseX + 20, baseY));

            RectangleF checkboxBound2 = new RectangleF(baseX + 70, baseY, 15, 15);
            PdfCheckBoxField checkBoxField2 = new PdfCheckBoxField(page, "checkbox2");
            checkBoxField2.Bounds = checkboxBound2;
            checkBoxField2.Checked = false;
            page.Canvas.DrawString("オプション 2", font, brush2, new PointF(baseX + 90, baseY));
            doc.Form.Fields.Add(checkBoxField1);
            doc.Form.Fields.Add(checkBoxField2);
            baseY += 25;

            //リストボックスを追加
            page.Canvas.DrawString("リストボックス:", font, brush1, new PointF(10, baseY));
            RectangleF listboxBound = new RectangleF(baseX, baseY, 150, 50);
            PdfListBoxField listBoxField = new PdfListBoxField(page, "listbox");
            listBoxField.Items.Add(new PdfListFieldItem("項目 1", "item1"));
            listBoxField.Items.Add(new PdfListFieldItem("項目 2", "item2"));
            listBoxField.Items.Add(new PdfListFieldItem("項目 3", "item3"));
            listBoxField.Bounds = listboxBound;
            listBoxField.Font = font;
            listBoxField.SelectedIndex = 0;
            doc.Form.Fields.Add(listBoxField);
            baseY += 60;

            //2つのラジオボタンを追加
            page.Canvas.DrawString("ラジオボタン:", font, brush1, new PointF(10, baseY));
            PdfRadioButtonListField radioButtonListField = new PdfRadioButtonListField(page, "radio");
            PdfRadioButtonListItem radioItem1 = new PdfRadioButtonListItem("option1");
            RectangleF radioBound1 = new RectangleF(baseX, baseY, 15, 15);
            radioItem1.Bounds = radioBound1;
            page.Canvas.DrawString("オプション 1", font, brush2, new PointF(baseX + 20, baseY));

            PdfRadioButtonListItem radioItem2 = new PdfRadioButtonListItem("option2");
            RectangleF radioBound2 = new RectangleF(baseX + 70, baseY, 15, 15);
            radioItem2.Bounds = radioBound2;
            page.Canvas.DrawString("オプション 2", font, brush2, new PointF(baseX + 90, baseY));
            radioButtonListField.Items.Add(radioItem1);
            radioButtonListField.Items.Add(radioItem2);
            radioButtonListField.SelectedIndex = 0;
            doc.Form.Fields.Add(radioButtonListField);
            baseY += 25;

            //コンボボックスを追加
            page.Canvas.DrawString("コンボボックス:", font, brush1, new PointF(10, baseY));
            RectangleF cmbBounds = new RectangleF(baseX, baseY, 150, 15);
            PdfComboBoxField comboBoxField = new PdfComboBoxField(page, "combobox");
            comboBoxField.Bounds = cmbBounds;
            comboBoxField.Items.Add(new PdfListFieldItem("項目 1", "item1"));
            comboBoxField.Items.Add(new PdfListFieldItem("項目 2", "item2"));
            comboBoxField.Items.Add(new PdfListFieldItem("項目 3", "item3"));
            comboBoxField.Items.Add(new PdfListFieldItem("項目 4", "item4"));
            comboBoxField.SelectedIndex = 0;
            comboBoxField.Font = font;
            doc.Form.Fields.Add(comboBoxField);
            baseY += 25;

            //署名フィールドを追加
            page.Canvas.DrawString("署名欄:", font, brush1, new PointF(10, baseY));
            PdfSignatureField sgnField = new PdfSignatureField(page, "sgnField");
            RectangleF sgnBounds = new RectangleF(baseX, baseY, 150, 80);
            sgnField.Bounds = sgnBounds;
            doc.Form.Fields.Add(sgnField);
            baseY += 90;

            //ボタンを追加
            page.Canvas.DrawString("ボタン:", font, brush1, new PointF(10, baseY));
            RectangleF btnBounds = new RectangleF(baseX, baseY, 50, 15);
            PdfButtonField buttonField = new PdfButtonField(page, "button");
            buttonField.Bounds = btnBounds;
            buttonField.Text = "送信";
            buttonField.Font = font;
            PdfSubmitAction submitAction = new PdfSubmitAction("https://www.e-iceblue.com/getformvalues.php");
            submitAction.DataFormat = SubmitDataFormat.Html;
            buttonField.Actions.MouseDown = submitAction;
            doc.Form.Fields.Add(buttonField);

            //ファイルに保存
            doc.SaveToFile("output/PDFにフォームフィールドを作成.pdf", FileFormat.PDF);
            doc.Close();
        }
    }
}

C#:PDF で記入可能なフォームを作成、記入、削除する方法

既存の PDF 文書のフォームフィールドに入力

フォームに入力するには、まず PDF 文書からすべてのフォームフィールドを取得し、特定のフィールドの種類を判別した後、値を入力するか、定義済みのリストから選択します。Spire.PDF for .NET を使用して既存の PDF 文書にフォームフィールドを入力する手順は以下のとおりです。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して PDF 文書を読み込みます。
  • PdfDocument.Form プロパティを通じてフォームを取得します。
  • PdfFormWidget.FieldsWidget プロパティを使用してフォームウィジェットコレクションを取得します。
  • フォームウィジェットコレクションをループして、特定の PdfField を取得します。
  • そのフィールドがテキストボックスであるかどうかを判別し、該当する場合は PdfTextBoxFieldWidget.Text プロパティを使用してテキストを設定します。
  • ステップ6を繰り返して、ラジオボタン、チェックボックス、コンボボックス、リストボックスに値を入力します。
  • PdfDocument.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Pdf;
using Spire.Pdf.Fields;
using Spire.Pdf.Widget;

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

            //フォームを含むテンプレートを読み込む
            doc.LoadFromFile("Sample1.pdf");

            //ドキュメントからフォームを取得
            PdfFormWidget form = (PdfFormWidget)doc.Form;

            //フォームウィジェットコレクションを取得
            PdfFormFieldWidgetCollection formWidgetCollection = form.FieldsWidget;

            //ウィジェットをループ処理
            for (int i = 0; i < formWidgetCollection.Count; i++)
            {
                //特定のフィールドを取得
                PdfField field = formWidgetCollection[i];

                //フィールドがテキストボックスかどうかを確認
                if (field is PdfTextBoxFieldWidget)
                {
                    if (field.Name == "name")
                    {
                        //テキストボックスのテキストを設定
                        PdfTextBoxFieldWidget textBoxField = (PdfTextBoxFieldWidget)field;
                        textBoxField.Text = "カイラ・スミス";
                    }
                }

                //フィールドがラジオボタンかどうかを確認
                if (field is PdfRadioButtonListFieldWidget)
                {
                    if (field.Name == "gender")
                    {
                        //ラジオボタンの選択インデックスを設定
                        PdfRadioButtonListFieldWidget radioButtonListField = (PdfRadioButtonListFieldWidget)field;
                        radioButtonListField.SelectedIndex = 1;
                    }
                }

                //フィールドがコンボボックスかどうかを確認
                if (field is PdfComboBoxWidgetFieldWidget)
                {
                    if (field.Name == "country")
                    {
                        //コンボボックスの選択インデックスを設定
                        PdfComboBoxWidgetFieldWidget comboBoxField = (PdfComboBoxWidgetFieldWidget)field;
                        int[] index = { 0 };
                        comboBoxField.SelectedIndex = index;
                    }
                }

                //フィールドがチェックボックスかどうかを確認
                if (field is PdfCheckBoxWidgetFieldWidget)
                {
                    //チェックボックスの「Checked」ステータスを設定
                    PdfCheckBoxWidgetFieldWidget checkBoxField = (PdfCheckBoxWidgetFieldWidget)field;
                    switch (checkBoxField.Name)
                    {
                        case "movie":
                            checkBoxField.Checked = true;
                            break;
                        case "music":
                            checkBoxField.Checked = true;
                            break;
                    }
                }

                //フィールドがリストボックスかどうかを確認
                if (field is PdfListBoxWidgetFieldWidget)
                {
                    if (field.Name == "degree")
                    {
                        //リストボックスの選択インデックスを設定
                        PdfListBoxWidgetFieldWidget listBox = (PdfListBoxWidgetFieldWidget)field;
                        int[] index = { 1 };
                        listBox.SelectedIndex = index;
                    }
                }
            }

            //ファイルに保存
            doc.SaveToFile("output/PDFフォームの記入.pdf", FileFormat.PDF);
            doc.Close();
        }
    }
}

C#:PDF で記入可能なフォームを作成、記入、削除する方法

フォームフィールドを PDF 文書から削除

PDF 文書のフォームフィールドは、インデックスまたは名前でアクセスでき、PdfFieldCollection.Remove() メソッドを使用して削除できます。Spire.PDF for .NET を使用して、特定のフィールドまたは既存の PDF 文書からすべてのフィールドを削除する手順は以下のとおりです。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して PDF 文書を読み込みます。
  • 文書からフォームウィジェットコレクションを取得します。
  • ウィジェットコレクションをループして特定の PdfField を取得し、PdfFieldCollection.Remove() メソッドを使用してフィールドを1つずつ削除します。
  • 特定のフォームフィールドを削除するには、PdfFormWidget.FieldsWidget["fieldName"] プロパティを使用してフィールドを取得し、PdfFieldCollection.Remove() メソッドを呼び出します。
  • PdfDocument.SaveToFile() メソッドを使用して文書を保存します。
  • C#
using Spire.Pdf;
using Spire.Pdf.Fields;
using Spire.Pdf.Widget;

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

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

            //ドキュメントからフォームフィールドを取得
            PdfFormWidget formWidget = doc.Form as PdfFormWidget;

            //ウィジェットをループ処理
            for (int i = formWidget.FieldsWidget.List.Count - 1; i >= 0; i--)
            {
                //特定のフィールドを取得
                PdfField field = formWidget.FieldsWidget.List[i] as PdfField;

                //フィールドを削除
                formWidget.FieldsWidget.Remove(field);
            }

            //特定の名前でフィールドを取得
            //PdfField field = formWidget.FieldsWidget["name"];
            //フィールドを削除
            //formWidget.FieldsWidget.Remove(field);

            //ファイルに保存
            doc.SaveToFile("output/PDFからすべてのフォームファイルを削除.pdf");
            doc.Close();
        }
    }
}

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 91 times