property FormFieldAt[X, Y: Single]: WString; // read / write
FormFieldAt는 page-space 점 (X, Y)를 포함하는 AcroForm widget annotation을 찾아 그 값을 Unicode 문자열로 노출합니다. 좌표는 PDF user space를 사용하며 원점은 page의 왼쪽 아래 모서리이고 단위는 point(1/72 inch)입니다. 이 속성을 읽으면 현재 field value(/V)를 WString으로 디코딩해 반환하고, 쓰면 field를 갱신한 뒤 appearance stream을 다시 생성하여 다음 paint에서 새 값이 렌더링되도록 합니다
Active가 False이거나 문서에 AcroForm이 없거나 좌표를 덮는 widget이 없으면 빈 문자열을 반환합니다. 매칭 정책은 FormFieldInfoAt와 같아서 widget rectangle만 사용하고 appearance-bound hit testing은 하지 않으며, 겹칠 때는 가장 위에 있는 widget이 선택됩니다. 좌표가 어떤 widget도 맞히지 못하면 쓰기는 아무 작업도 하지 않습니다
checkbox와 radio button widget의 값 의미는 PDF spec을 따릅니다. 'Off'를 지정하면 field가 지워지고, widget의 /AP /N on-state name에 맞는 값을 지정하면('Yes'나 export value가 흔함) 체크됩니다. text field에는 지정한 모든 값이 새 /V 내용이 됩니다. list / combo box는 option entry 중 하나에 연결된 export value를 받습니다. field type이 확실하지 않으면 먼저 FormFieldInfoAt로 FieldType를 확인하세요
SaveToFile / SaveToStream 호출에서만 저장됩니다FormFieldAt / FormField 할당을 통한 연속 쓰기는 순서대로 처리하면 안전하지만, background thread에서는 절대 호출하지 마세요. PDFium form field는 threadsafe하지 않습니다
// Toggle a checkbox located at (120, 300) on the current page.
if Pdf1.FormFieldAt[120.0, 300.0] = 'Off' then
Pdf1.FormFieldAt[120.0, 300.0] := 'Yes'
else
Pdf1.FormFieldAt[120.0, 300.0] := 'Off';