導入

現代のドキュメント管理システムでは、フォームフィールドはデータ収集、ユーザーインタラクション、そしてドキュメントの自動化において重要な役割を果たします。GroupDocs.Signature for .NETは、開発者が様々なドキュメント形式のフォームフィールドを操作し、プログラムによる検索、取得、処理などを行うための強力なツールセットを提供します。

この包括的なガイドでは、GroupDocs.Signature for .NET を使用してドキュメント内のフォーム フィールド署名を検索するプロセスを、明確な説明、実用的なコード例、実装のベスト プラクティスとともに説明します。

前提条件

GroupDocs.Signature for .NET を使用してフォーム フィールドの検索を開始する前に、次の前提条件が満たされていることを確認してください。

  1. 開発環境: Visual Studio または任意の IDE を使用して .NET 開発環境をセットアップします。

  2. GroupDocs.Signature for .NET: GroupDocs.Signature for .NETライブラリを以下のサイトからダウンロードしてインストールします。 ここ.

  3. ドキュメントへのアクセス: 入手可能な包括的なドキュメントをよく読んでください。 GroupDocs.Signature for .NET ドキュメント.

  4. 基礎知識: C# プログラミングと .NET フレームワークの基礎を理解していると役立ちます。

名前空間のインポート

まず、GroupDocs.Signature の機能にアクセスするために必要な名前空間をインポートします。

using System;
using System.Collections.Generic;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;

次に、ドキュメント内のフォーム フィールドを検索するプロセスを、明確で実行可能な手順に分解してみましょう。

ステップ1: ドキュメントパスを定義する

まず、検索するフォーム フィールドを含むドキュメントへのパスを指定します。

string filePath = "sample_signed_formfield.pdf";

ステップ2: 署名オブジェクトの初期化

インスタンスを作成する Signature ファイル パスをコンストラクターに渡すことでクラスを作成します。

using (Signature signature = new Signature(filePath))
{
    // フォームフィールドの検索コードがここに追加されます
}

ステップ3: フォームフィールドの署名を検索する

使用 Search 適切な署名タイプを使用して、ドキュメント内のフォーム フィールドを検索するメソッド。

// 文書内のフォームフィールド署名を検索する
List<FormFieldSignature> formFields = signature.Search<FormFieldSignature>(SignatureType.FormField);

ステップ4: 結果を処理して表示する

見つかったフォーム フィールドを反復処理し、そのプロパティにアクセスします。

// 見つかったフォームフィールドに関する情報を表示する
Console.WriteLine($"\nDocument '{filePath}' contains {formFields.Count} form field signature(s):");

foreach (var formField in formFields)
{
    Console.WriteLine($"Form Field Name: {formField.Name}");
    Console.WriteLine($"Form Field Type: {formField.Type}");
    Console.WriteLine($"Form Field Value: {formField.Value}");
    Console.WriteLine($"Form Field Page: {formField.PageNumber}");
    Console.WriteLine();
}

完全な例

ドキュメント内のフォーム フィールドを検索する方法を示す完全な実用的な例を次に示します。

using System;
using System.Collections.Generic;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;

namespace FormFieldSearchExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // ドキュメントパス - ファイルパスを更新します
            string filePath = "sample_signed_formfield.pdf";

            // 署名インスタンスを初期化する
            using (Signature signature = new Signature(filePath))
            {
                try
                {
                    // フォームフィールドの署名を検索する
                    List<FormFieldSignature> formFields = signature.Search<FormFieldSignature>(SignatureType.FormField);

                    // 結果を表示
                    Console.WriteLine($"\nDocument '{filePath}' contains {formFields.Count} form field signature(s):");

                    foreach (var formField in formFields)
                    {
                        Console.WriteLine($"Form Field Name: {formField.Name}");
                        Console.WriteLine($"Form Field Type: {formField.Type}");
                        Console.WriteLine($"Form Field Value: {formField.Value}");
                        Console.WriteLine($"Form Field Page: {formField.PageNumber}");
                        Console.WriteLine();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error occurred: {ex.Message}");
                }
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

高度なフォームフィールド検索テクニック

特定のフォームフィールドオプションを使用した検索

よりターゲットを絞った検索には、 FormFieldSearchOptions 検索条件をカスタマイズするには:

// フォームフィールドの検索オプションを作成する
FormFieldSearchOptions options = new FormFieldSearchOptions
{
    // 特定のページを検索
    AllPages = false,
    PageNumber = 1,
    
    // フィールド名でフィルタリング
    Name = "Signature",
    
    // フィールドタイプでフィルタリング
    Type = FormFieldType.TextFormField
};

// 特定のオプションで検索
List<FormFieldSignature> specificFormFields = signature.Search<FormFieldSignature>(options);

さまざまなフォームフィールドタイプの操作

GroupDocs.Signature は、それぞれ特定のプロパティを持つさまざまなフォーム フィールド タイプをサポートしています。

foreach (var formField in formFields)
{
    switch (formField.Type)
    {
        case FormFieldType.TextFormField:
            // テキストフォームフィールドを処理する
            Console.WriteLine($"Text Field: {formField.Name}, Value: {formField.Value}");
            break;
            
        case FormFieldType.CheckboxFormField:
            // チェックボックスフィールドを処理する
            bool isChecked = Convert.ToBoolean(formField.Value);
            Console.WriteLine($"Checkbox: {formField.Name}, Checked: {isChecked}");
            break;
            
        case FormFieldType.ComboboxFormField:
            // コンボボックスフィールドを処理する
            Console.WriteLine($"Combobox: {formField.Name}, Selected Value: {formField.Value}");
            break;
            
        case FormFieldType.DigitalFormField:
            // デジタル署名フィールドを処理する
            Console.WriteLine($"Digital Signature Field: {formField.Name}");
            break;
            
        case FormFieldType.RadioButtonFormField:
            // ラジオボタンフィールドを処理する
            Console.WriteLine($"Radio Button: {formField.Name}, Selected: {formField.Value}");
            break;
    }
}

処理のためのフォームフィールドデータの抽出

フォーム フィールド データを抽出して処理し、アプリケーションでさらに使用することができます。

// フォームフィールドの値を保存するための辞書を作成する
Dictionary<string, object> formData = new Dictionary<string, object>();

// フォームフィールドデータを抽出する
foreach (var field in formFields)
{
    formData.Add(field.Name, field.Value);
}

// 収集したデータを処理する
ProcessFormData(formData);

// 処理方法の例
static void ProcessFormData(Dictionary<string, object> data)
{
    // ここでデータ処理ロジックを実装します
    foreach (var item in data)
    {
        Console.WriteLine($"Processing field '{item.Key}' with value '{item.Value}'");
    }
}

結論

この包括的なガイドでは、GroupDocs.Signature for .NET を使用してドキュメント内のフォームフィールド署名を検索および処理する方法を説明しました。基本的な検索方法から、様々なフォームフィールドタイプに対応した高度なテクニックまで、.NETアプリケーションにフォームフィールド機能を実装するための知識を習得できます。

GroupDocs.Signature は、ドキュメント署名を操作するための強力で柔軟なフレームワークを提供し、フォーム フィールドを効率的かつ安全に処理する堅牢なドキュメント管理ソリューションを構築できるようにします。

よくある質問

GroupDocs.Signature はパスワードで保護されたドキュメント内のフォーム フィールドを検索できますか?

はい、GroupDocs.Signatureは、初期化時にパスワードを入力することで、パスワードで保護された文書内のフォームフィールドを検索できます。 Signature 物体:

LoadOptions loadOptions = new LoadOptions { Password = "your_password" };
using (Signature signature = new Signature(filePath, loadOptions))
{
    // フォームフィールドを検索
}

フォーム フィールドの検索をサポートするドキュメント形式はどれですか?

GroupDocs.Signature は、PDF、Microsoft Word (DOC、DOCX)、Excel (XLS、XLSX)、PowerPoint (PPT、PPTX) など、さまざまなドキュメント形式でのフォーム フィールド検索をサポートしています。

検索後にフォーム フィールドの値を変更できますか?

はい、フォーム フィールドを検索した後、その値を変更してドキュメントを更新できます。

// フォームフィールドを検索
List<FormFieldSignature> fields = signature.Search<FormFieldSignature>(SignatureType.FormField);

// フィールド値を変更する
foreach (var field in fields)
{
    if (field.Name == "CustomerName")
    {
        field.Value = "John Doe";
    }
}

// 更新されたドキュメントを保存する
signature.Save("updated_document.pdf");

特定の値を持つフォーム フィールドを検索するにはどうすればよいですか?

カスタム検索オプションを使用して、特定の値を持つフォーム フィールドを検索できます。

// 検索オプションを作成する
FormFieldSearchOptions options = new FormFieldSearchOptions
{
    // デリゲートを使用して値でフィルタリングする
    ProcessCompleted = (fieldSignature) =>
    {
        // 特定の値を持つフィールドに対してのみ true を返す
        return fieldSignature.Value != null && fieldSignature.Value.ToString().Contains("Approved");
    }
};

// フィルターで検索
List<FormFieldSignature> filteredFields = signature.Search<FormFieldSignature>(options);

フォーム フィールドを含む複数の署名タイプを 1 回の操作で検索できますか?

はい、1 回の操作で複数の署名タイプを検索できます。

// さまざまな署名タイプの検索オプションを作成する
FormFieldSearchOptions formFieldOptions = new FormFieldSearchOptions();
DigitalSearchOptions digitalOptions = new DigitalSearchOptions();

// 検索オプションのリストを作成する
List<SearchOptions> searchOptions = new List<SearchOptions>
{
    formFieldOptions,
    digitalOptions
};

// 複数の署名タイプを検索する
SearchResult result = signature.Search(searchOptions);

// 結果からさまざまな署名タイプにアクセスする
foreach (var sig in result.Signatures)
{
    if (sig is FormFieldSignature formField)
    {
        Console.WriteLine($"Form Field: {formField.Name}");
    }
    else if (sig is DigitalSignature digitalSignature)
    {
        Console.WriteLine($"Digital Signature: {digitalSignature.Certificate?.SubjectName}");
    }
}

参照