PDFium Delphi Component Docs

FormFieldInfoAt Свойство

Компонент: TPdf  ·  Модуль: PDFium
Запись поля формы для виджета, расположенного по заданной координате страницы

Syntax

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

Description

FormFieldInfoAt выполняет hit-test на текущей активной странице и возвращает запись TPdfFormFieldInfo, описывающую widget-аннотацию в точке (X, Y). Координаты заданы в пользовательском пространстве PDF: начало в левом нижнем углу страницы, единицы — пункты (1/72 дюйма). Запись повторяет то, что возвращает FormFieldInfo[Index]: тип поля (fiTextField, fiCheckBox, …), имя поля, альтернативное имя, флаги, метки опций, состояние галочки, export value и размер шрифта

Если координата не попадает ни в один прямоугольник виджета, FormFieldInfoAt возвращает TPdfFormFieldInfo, инициализированный по умолчанию — FieldType = fiUnknown и пустые строки везде. Дешёвую проверку «есть/нет» перед получением полной записи делает HasFormFieldAt[X, Y], либо просто проверьте возвращённый FieldType

Поиск стоит O(n) по виджетам страницы и вдобавок декодирует Unicode-метаданные поля, поэтому тяжелее HasFormFieldAt. В обработчике mouse-move сначала проверяйте HasFormFieldAt; FormFieldInfoAt вызывайте только по клику или входу курсора. Координаты от позиции мыши сначала прогоняйте через 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