property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt realiza una prueba de impacto en la página activa actual y devuelve el registro TPdfFormFieldInfo que describe la anotación widget en (X, Y). Las coordenadas están en el espacio de usuario PDF, con el origen en la esquina inferior izquierda de la página y unidades expresadas en puntos (1/72 inch). El registro refleja lo que devuelve FormFieldInfo[Index]: tipo de campo (fiTextField, fiCheckBox, …), nombre del campo, nombre alterno, banderas, etiquetas de opción, estado marcado, valor de exportación y tamaño de fuente
Cuando la coordenada no cae dentro de ningún rectángulo de widget, FormFieldInfoAt devuelve un TPdfFormFieldInfo inicializado por defecto, con FieldType = fiUnknown y cadenas vacías en todos los campos. Use HasFormFieldAt[X, Y] para una comprobación rápida sí o no antes de obtener el registro completo, o simplemente revise el FieldType devuelto
La búsqueda es O(n) sobre los widgets de la página y además decodifica metadatos Unicode de campo, así que cuesta más que HasFormFieldAt. En un controlador de movimiento del mouse, revise primero HasFormFieldAt; solo llame FormFieldInfoAt al hacer clic o al entrar con el mouse. Las coordenadas de una posición del mouse pasan primero por TPdfView.PointToPage para traducir píxeles del dispositivo a unidades de página
/AnnotsFieldType = fiSignature; combínelo con SignatureCount para enumerar por separado el estado de firmaFormFieldAt invalidan los registros en caché; vuelva a leer después de cada escritura
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;