Forms

Forms

このページでは、インタラクティブな AcroForm フィールドの作成と管理について説明します。Form は、doc.Form を通じてアクセスでき、すべてのフィールドタイプのファサードです。各 Add*() メソッドは、ページとウィジェット矩形に紐付いたフィールドを作成し、型付きハンドル(TextField、CheckboxField、ChoiceField、ButtonField、または RadioField)を返します。このハンドルは、共通の Field プロパティである Value、ReadOnly、および Required を共有します。


フィールドの作成

Form.AddTextField()、Form.AddCheckbox()、Form.AddComboBox() およびそれらの兄弟は、対象の page(0 ベース)、ウィジェット rect、フィールド name、および borderColor や backgroundColor などのスタイリングを指定するオプションオブジェクトを受け取ります。

const form = doc.Form;
const pageNum = page.Number;

form.AddTextField({
  page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
  borderColor: [0.05, 0.1, 0.3], backgroundColor: [0.9, 0.93, 1], borderWidth: 1,
  font: 'Helvetica', fontSize: 12,
});

form.AddCheckbox({
  page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
  checked: true, borderColor: [0.05, 0.1, 0.3], borderWidth: 1,
});

form.AddComboBox({
  page: pageNum, rect: [200, 550, 350, 570], name: 'Country', value: 'US',
  options: [
    { export: 'US', display: 'United States' },
    { export: 'UK', display: 'United Kingdom' },
    { export: 'DE', display: 'Germany' },
  ],
});

Page.AddTextField() と Page.AddCheckbox() は、オプションオブジェクトで doc.Form や page 番号を指定せずに、ページ上で同じフィールドタイプを直接作成します。


フィールドの読み取りと変更

Form.Fields はドキュメント上のすべての Field の配列です。Form.Get() は完全修飾名でそれを検索します。すべてのフィールドの Value は読み取ったり再代入したりでき、ReadOnly / Required は単純なブールプロパティです。

const nameField = doc.Form.Get('FullName');
if (nameField) {
  console.log(nameField.Value);
  nameField.Value = 'Bob Sample';
}

フィールドのフラット化

すべてのフィールドタイプのFlatten()メソッドは、現在の外観をページの静的コンテンツに焼き付け、AcroFormから削除します — これは、アノテーションに対してAnnotation.Flatten()が持つ永続的で非対話的な効果と同じです。

const tb = form.AddTextField({
  page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();

ヒントとベストプラクティス

  • Add*() 呼び出しから直接返されるフィールドハンドル、または Form.Get() で新たに取得したハンドルを変更してください — 古い参照は他の場所で行われた変更を反映しません。
  • Form.RemoveField() は、Field ハンドルまたはフィールド名文字列のいずれかを受け付けます。
  • フィールド値を一括で変更した後にForm.GenerateAppearances()を呼び出し、すべてのフィールドの画面上の外観がValueと同期したままになるようにしてください。
  • コンボボックスとリストボックスは、選択されたexportの値を/Vに格納します;生成された外観に表示されるのはdisplayテキストです。

一般的な問題

問題原因修正
フィールドが Form.AddTextField() で追加されてもページに表示されませんrect の座標が対象ページの寸法の範囲外です矩形がページの境界内にあることを確認してください
Flatten() 後もフィールドがインタラクティブなままですFlatten() はハンドル Add*() / Form.Get() が返すものではなく、コピーに対して呼び出されましたフォームから直接取得したオブジェクトに対して Flatten() を呼び出す
フィールドの値の変更が画面に表示されません値が変更された後、フィールドの外観が再生成されませんでしたForm.GenerateAppearances() を呼び出すか、フィールド独自の GenerateAppearance() を使用してください

FAQ

作成した後、フィールドの値を読み取ったり変更したりするにはどうすればよいですか?

Form.Get('fieldName') で検索します(または Add*() 呼び出しが返したハンドルを使用します)し、Value プロパティを直接読み取るか設定します。

Form ファサードがサポートするフィールドタイプは何ですか?

テキストフィールド、チェックボックス、ラジオグループ、コンボボックス、リストボックス、プッシュボタンは、Form.AddTextField()、Form.AddCheckbox()、Form.AddRadioGroup()、Form.AddComboBox()、Form.AddListBox()、Form.AddPushButton() を介して利用できます。

フィールドを削除するにはどうすればよいですか?

Form.RemoveField() を、フィールドのハンドルまたは名前のいずれかで呼び出します。

フォームフィールドを永久的かつ編集不可にするにはどうすればよいですか?

フィールドハンドル上で Flatten() を呼び出します — アノテーションで使用されるのと同じパターンです — これにより現在の外観がページに焼き込まれ、AcroForm からは削除されます。


API Reference の概要

クラス/メソッド説明
FormAcroForm ファサード、doc.Form を介して到達
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton()対応する型のフィールドを作成する
Form.Fieldsドキュメント上のすべての Field を配列として
Form.Get()完全修飾名でフィールドを検索する
Form.RemoveField()ハンドルまたは名前でフィールドを削除する
Form.GenerateAppearances()すべてのフィールドの画面上の外観を再生成する
TextField / CheckboxField / ChoiceField / ButtonField / RadioField入力されたフィールドは Value、ReadOnly、Required の共有を処理します
Page.AddTextField() / Page.AddCheckbox()ページ上に直接フィールドを作成する

参照

 日本語