PDFium Delphi Component Docs

FormFieldInfoAt プロパティ

コンポーネント: TPdf  ·  ユニット: PDFium
指定した page coordinate にある widget の form field record です

Syntax

property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only

Description

FormFieldInfoAt は現在アクティブなページに対して hit-test を行い、(X, Y) にあるウィジェット注釈を記述する TPdfFormFieldInfo レコードを返します。座標は PDF user space で、原点はページ左下、単位はポイント(1/72 インチ)です。レコードの内容は FormFieldInfo[Index] の返すものと同じで、フィールドタイプ(fiTextField、fiCheckBox など)、フィールド名、別名、フラグ、オプションラベル、チェック状態、エクスポート値、フォントサイズが入ります

座標がどのウィジェット矩形にも入らない場合、FormFieldInfoAt はデフォルト初期化された TPdfFormFieldInfo を返します。FieldType = fiUnknown で文字列はすべて空です。完全なレコードを取り出す前に手軽な yes/no 判定が要るなら HasFormFieldAt[X, Y] を使うか、返された FieldType をそのまま確認してください

この検索はページのウィジェットに対して O(n) で、さらに Unicode のフィールドメタデータをデコードするため HasFormFieldAt より重い処理です。マウスムーブハンドラでは先に HasFormFieldAt を確認し、FormFieldInfoAt はクリックか hover-enter のときだけ呼びます。マウス位置からの座標は、デバイスピクセルをページ単位へ変換するためにまず TPdfView.PointToPage を通してください

Remarks

Example

procedure TForm1.PdfView1Click(Sender: TObject);
var Info: TPdfFormFieldInfo;
  PageX, PageY: Double;
begin
  PdfView1.PointToPage(Mouse.CursorPos.X, Mouse.CursorPos.Y, PageX, PageY);
  Info := Pdf1.FormFieldInfoAt[PageX, PageY];
  if Info.FieldType <> fiUnknown then
    ShowMessage(Info.Name);
end;

See Also

HasFormFieldAt, FormFieldInfo, FormFieldAt, FormFieldCount