PDFフォームに記入

PDFフォームは、データや情報を収集するために頻繁に使用されます。たとえば、アンケートは通常、調査目的で回答を収集するように設計されています。今日のデジタル世界では、さまざまな入力可能なPDFフォームを操作します。 PDFフォームの広大な範囲と重要性を考慮すると、Aspose.PDF for .NET APIは、PDFフォームを操作するための多くの機能をサポートしています。この記事では、C#言語を使用して次のユースケースを調べてみましょう。

C#を使用して入力可能なPDFフォームを作成する

Aspose.PDF for .NET APIを使用して、入力可能なPDFフォームを最初から作成できます。ここでは、2つのTextBoxFieldインスタンスとRadioButtonを追加する基本的な例を検討します。ただし、TextBoxFieldの1つは単一行で、もう1つは複数行です。以下は、PDFドキュメントでフォームを作成する手順です。

  1. Documentクラスのインスタンスを作成します
  2. PDFドキュメントに空白のページを追加する
  3. フォームにTextBoxフィールドを追加します
  4. フォント、境界線などのフィールドのさまざまなプロパティを設定します。
  5. フォームにラジオボタンを追加します
  6. PDFドキュメントを保存

次のコードスニペットは、C#を使用してPDFでフォームを作成する方法を示しています。

Document pdfdoc = new Document();
Page page = pdfdoc.Pages.Add();
TextBoxField nameBox = new TextBoxField(pdfdoc, new Aspose.Pdf.Rectangle(275, 740, 440, 770));
nameBox.PartialName = "nameBox1";
nameBox.DefaultAppearance.FontSize = 10;
nameBox.Multiline = true;
Border nameBorder = new Border(nameBox);
nameBorder.Width = 1;
nameBox.Border = nameBorder;
nameBox.Characteristics.Border = System.Drawing.Color.Black;
nameBox.Color = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red);
TextBoxField mrnBox = new TextBoxField(pdfdoc, new Aspose.Pdf.Rectangle(275, 718, 440, 738));
mrnBox.PartialName = "Box1";
mrnBox.DefaultAppearance.FontSize = 10;
Border mrnBorder = new Border(mrnBox);
mrnBorder.Width = 1;
mrnBox.Border = mrnBorder;
mrnBox.Characteristics.Border = System.Drawing.Color.Black;
mrnBox.Color = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red);
// PDFドキュメントの最初のページにフォームフィールドを追加します            
pdfdoc.Form.Add(nameBox, 1);
pdfdoc.Form.Add(mrnBox, 1);

//PDFの特定の位置座標にラジオボタンを追加する
Aspose.Pdf.Table table = new Aspose.Pdf.Table();
//ここで位置を設定します
table.Left = 200;
table.Top = 300;
table.ColumnWidths = "120";
page.Paragraphs.Add(table);
Aspose.Pdf.Row r1 = table.Rows.Add();
Aspose.Pdf.Row r2 = table.Rows.Add();
Aspose.Pdf.Cell c1 = r1.Cells.Add();
Aspose.Pdf.Cell c2 = r2.Cells.Add();
RadioButtonField rf = new RadioButtonField(page);
rf.PartialName = "radio";
pdfdoc.Form.Add(rf, 1);
RadioButtonOptionField opt1 = new RadioButtonOptionField();
RadioButtonOptionField opt2 = new RadioButtonOptionField();
opt1.OptionName = "Yes";
opt2.OptionName = "No";
opt1.Width = 15;
opt1.Height = 15;
opt2.Width = 15;
opt2.Height = 15;
rf.Add(opt1);
rf.Add(opt2);
opt1.Border = new Border(opt1);
opt1.Border.Width = 1;
opt1.Border.Style = BorderStyle.Solid;
opt1.Characteristics.Border = System.Drawing.Color.Black;
opt1.DefaultAppearance.TextColor = System.Drawing.Color.Red;
opt1.Caption = new TextFragment("Yes");
opt2.Border = new Border(opt1);
opt2.Border.Width = 1;
opt2.Border.Style = BorderStyle.Solid;
opt2.Characteristics.Border = System.Drawing.Color.Black;
opt2.DefaultAppearance.TextColor = System.Drawing.Color.Red;
opt2.Caption = new TextFragment("No");
c1.Paragraphs.Add(opt1);
c2.Paragraphs.Add(opt2);
pdfdoc.Save(dataDir + "Fillable_PDF_Form.pdf");

以下のスクリーンショットは、上記のコードスニペットで指定されたフォームフィールドを含む出力PDFドキュメントを示しています。

PDFフォーム

C#を使用して既存のPDFのフォームフィールドに入力、変更、または削除する

C#を使用してPDFドキュメントでフォームを作成する方法を検討したため、Aspose.PDF for .NET APIは既存のPDFフォームの操作もサポートしています。 APIの次の機能について説明します。

i)C#を使用して既存のPDFファイルのフォームフィールドに入力します

PDFフォームに記入するために、上記の例で作成されたPDFドキュメントを続行します。以下は、既存のPDFドキュメントのフィールドに入力する手順です。

  1. ソースPDFドキュメントをロード
  2. テキストボックスフィールドと入力値を取得します
  3. ラジオボタンフィールドを取得し、グループからオプションを選択します
  4. 記入済みのPDFフォームを保存

次のコードスニペットは、次の手順に従い、C#を使用してPDFドキュメントのフィールドに入力する方法を説明しています。

// ドキュメントを開く
Document pdfDocument = new Document(dataDir + "Fillable_PDF_Form.pdf");

// フィールドを取得する
TextBoxField textBoxField1 = pdfDocument.Form["nameBox1"] as TextBoxField;
TextBoxField textBoxField2 = pdfDocument.Form["Box1"] as TextBoxField;
// フォームフィールドの値を入力します
textBoxField1.Value = "A quick brown fox jumped over a lazy dog.";
textBoxField2.Value = "A quick brown fox jumped over a lazy dog.";

// ラジオボタンフィールドを取得
RadioButtonField radioField = pdfDocument.Form["radio"] as RadioButtonField;
// グループのラジオボタンのインデックスを指定します
radioField.Selected = 1;

dataDir = dataDir + "Fill_PDF_Form_Field.pdf";
// 更新されたドキュメントを保存する
pdfDocument.Save(dataDir);

以下のスクリーンショットは、C#を使用したPDFフォームの入力フォームフィールドを示しています。

記入可能なPDF

ii)C#を使用してPDFドキュメントのフォームフィールドを変更する

PDFフォームの任意のフィールドの値を変更する必要がある場合があります。フォームフィールドの値を変更することは、以下の手順で実現できる基本的なユースケースです。

  1. PDFフォームをロードする
  2. 名前を使用して特定のフィールドを取得する
  3. フィールド値を変更する
  4. 更新されたPDFドキュメントを保存します

次のコードスニペットは、PDFドキュメントのフォームフィールドの値を変更する方法を示しています。

// ドキュメントを開く
Document pdfDocument = new Document(dataDir + "Fill_PDF_Form_Field.pdf");
// フィールドを取得
TextBoxField textBoxField = pdfDocument.Form["nameBox1"] as TextBoxField;
// フィールド値を変更する
textBoxField.Value = "Changed Value";
textBoxField.ReadOnly = true;
dataDir = dataDir + "ModifyFormField.pdf";
// 更新されたドキュメントを保存する
pdfDocument.Save(dataDir);

ここで注目すべきは、フォームの値を変更できるだけでなく、他のプロパティも更新できることです。たとえば、上記のコードスニペットでは、フィールドは読み取り専用としてマークされています。

iii)C#を使用して既存のPDFファイルのフォームフィールドを削除する

PDFフォームフィールドの追加と入力についてはすでに学習しました。次に、フォームフィールドの削除について見ていきましょう。以下の手順に従う必要があります。

  1. PDFドキュメントをロードする
  2. フォームフィールドの名前を使用してDeleteメソッドを呼び出します
  3. PDFドキュメントを保存

次のコードスニペットは、C#を使用してPDFファイルからフォームフィールドを削除する方法を示しています。

// ドキュメントを開く
Document pdfDocument = new Document(dataDir + "Fill_PDF_Form_Field.pdf");
// 名前で特定のフィールドを削除する
pdfDocument.Form.Delete("nameBox1");
dataDir = dataDir + "Delete_Form_Field.pdf";
// 変更したドキュメントを保存する
pdfDocument.Save(dataDir);

C#を使用してPDFフォームの拡張された権利を保持する

PDFフォームには、拡張機能とも呼ばれる拡張権限があり、フォーム操作中に保持する必要があります。以下の手順に従って、段階的に保存する必要があります。

  • PDFドキュメントをストリームにロードする
  • フォームを操作する
  • パラメータなしでファイルを保存します

次のC#コードスニペットは、PDFフォームの拡張権限を保持する方法を説明しています。

// 読み取りと書き込みのFileAccessを使用してソースPDFフォームを読み取ります。
// 変更後、ReadWrite権限が必要です。
// 更新した内容を同じドキュメント/ファイルに保存する必要があります。
FileStream fs = new FileStream(dataDir + "Fill_PDF_Form_Field.pdf", FileMode.Open, FileAccess.ReadWrite);
// ドキュメントインスタンスをインスタンス化する
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(fs);
// すべてのフィールドから値を取得します
foreach (Field formField in pdfDocument.Form)
{
    // フィールドのフルネームにA1が含まれている場合は、操作を実行します
    if (formField.FullName.Contains("nameBox1"))
    {
        // フォームフィールドをTextBoxとしてキャストします
        TextBoxField textBoxField = formField as TextBoxField;
        // フィールド値を変更する
        textBoxField.Value = "Preserve Extended Features";
    }
}
// 更新されたドキュメントをsaveFileStreamに保存します
pdfDocument.Save();
// ファイルストリームオブジェクトを閉じます
fs.Close();

C#を使用してPDF形式でJavaScriptを使用する

Aspose.PDF for .NET APIを使用すると、PDFフォームフィールドでJavaScriptを使用できます。この要件を達成するために、以下の手順に従ってください。

  1. Documentクラスのインスタンスを開始します
  2. 特定のページ座標の最初のページにTextBoxFieldを追加します
  3. JavaScriptを設定する
  4. ドキュメントアクションを指定する
  5. PDFドキュメントを保存

次のコードスニペットは、C#を使用してPDF形式でJavaScriptを追加する方法を示しています。

Aspose.Pdf.Document pdfdoc = new Aspose.Pdf.Document();
pdfdoc.Pages.Add();
Aspose.Pdf.Forms.TextBoxField textBoxField = new Aspose.Pdf.Forms.TextBoxField(pdfdoc.Pages[1], new Aspose.Pdf.Rectangle(85, 750, 215, 770));
textBoxField.PartialName = "textbox1";
textBoxField.Value = "Text Box";
//TextBoxField.Border = new Border();
Border border = new Border(textBoxField);
border.Width = 2;
border.Dash = new Dash(1, 1);
textBoxField.Border = border;
textBoxField.DefaultAppearance.FontSize = 10;
textBoxField.Color = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
// ドキュメントにフィールドを追加
pdfdoc.Form.Add(textBoxField, 1);
string JS = @"var w = this.getField('" + textBoxField.PartialName + "'); var today = new Date(); w.value = today.toLocaleString();";
pdfdoc.OpenAction = new JavascriptAction(JS);
pdfdoc.Save(dataDir + "JS_Form.pdf");

JavaScriptは、PDFドキュメントが開かれ、その値がテキストボックスに入力されたときに、システムの現在の日付と時刻を取得します。

結論

この記事では、PDFドキュメントでフォームを操作するさまざまな側面を学びました。 Aspose.PDF for .NET APIを使用すると、PDFフォームの作成、入力、編集が簡単になります。 APIは、さまざまなファイルを操作するための多くのエキサイティングな機能を提供します。 無料サポートフォーラムからフィードバックやコメントをお知らせください。

関連項目