PDFium Component Docs

HasFormFieldAt 속성

이 API 항목은 식별자, 시그니처, 코드 블록, PDF 용어를 원래 형태로 유지합니다.
컴포넌트: TPdf  ·  유닛: PDFium
지정한 page 좌표를 form field widget이 덮고 있으면 True를 반환하는 hit-test입니다

구문

property HasFormFieldAt[X, Y: Single]: Boolean; // read only

설명

HasFormFieldAt는 현재 활성 page에서 hit-test를 수행합니다. 지정한 (X, Y) 좌표가 어떤 widget annotation rectangle 안에 들어가면 True를 반환합니다. 좌표는 PDF user space를 사용하며 PageWidth / PageHeight와 같은 좌표계입니다. 원점은 왼쪽 아래이고, X는 오른쪽으로 증가하며, Y는 위로 증가하고, 단위는 point (1/72 inch)입니다

이 property는 ActiveFalse이거나, 문서에 AcroForm widget이 없거나, 전달한 좌표가 어떤 widget rectangle에도 닿지 않으면 False를 반환합니다. PDFium의 FPDFPage_HasFormFieldAtPoint를 감싼 상수 시간 wrapper이며, 값이 초당 여러 번 조회되는 viewer의 mouse-move / hover feedback에 적합합니다

이 hit-test는 appearance bounds가 아니라 widget rectangle만 판정합니다. visible glyph가 widget rect보다 작은 push button이나 check box도 전체 rect에 대해 True를 반환합니다. hit-test로 커서가 field 위에 있는 것이 확인되면 FormFieldInfoAt[X, Y]와 함께 사용해 일치한 field의 record를 가져오세요. 이렇게 하면 모든 mouse-move event마다 더 무거운 info fetch를 하지 않아도 됩니다

비고

예제

procedure TForm1.PdfView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var PageX, PageY: Double;
begin
  PdfView1.DeviceToPage(X, Y, PageX, PageY);
  if Pdf1.HasFormFieldAt[PageX, PageY] then
    PdfView1.Cursor := crHandPoint
  else
    PdfView1.Cursor := crDefault;
end;

참고 항목

FormFieldAt, FormFieldInfoAt, FormFieldCount, TPdfView.DeviceToPage