필드가 여러 위젯을 가질 수 있습니다 (라디오 버튼 확실히, 질문 아래 MKL하여 설명을 볼 수 있습니다) 다음 위젯 목록이 발견 될 것입니다 라디오 버튼을 입력 키즈 배열이므로 사전을 직접 액세스하는 대신 PDFBox에서 제공하는 방법을 사용하여 편리하게 생활하십시오. 첨부 된 코드는 PDFBOX-142 문제의 파일과 함께 작동합니다. "amt"필드는 체크 표시처럼 보이지만 9 개의 위젯이있는 라디오 버튼 필드입니다. PDFDebugger을 실행하고 "보기"메뉴로 이동 한 다음 "내부 구조 표시"로 변경 한 다음 Root/AcroForm/Fields를 봅니다.
는 프로그래밍 방식으로 사각형을 얻을이 코드를 사용하려면
PDDocument document = PDDocument.load(new URL("https://issues.apache.org/jira/secure/attachment/12742551/Testformular1.pdf").openStream());
PDField field = document.getDocumentCatalog().getAcroForm().getField("amt");
System.out.println(field.getClass().getSimpleName());
for (PDAnnotationWidget widget : field.getWidgets())
{
System.out.println(widget.getRectangle());
}
document.close();
을 그리고 이것은 출력 :
PDRadioButton
[177.944,580.3095,190.1991,592.0744]
[178.8963,350.25168,191.45924,361.8096]
[535.79285,467.17078,548.0479,478.93567]
[417.16348,467.17078,429.41858,478.93567]
[298.04395,466.19037,310.29904,477.95526]
[177.944,466.19037,190.1991,477.95526]
[534.81244,581.2899,547.0675,593.0548]
[417.16348,581.2899,429.41858,593.0548]
[298.04395,581.2899,310.29904,593.0548]
PDFDebugger로 파일을 열면이 위치를 확인할 수 있습니다 ("내부 구조 표시"모드에서 이미 열린 상태에서 "보기"메뉴에서 "페이지 표시"선택)하고 렌더링 된 이미지 위로 마우스를 이동하면 좌표가 메인 프레임의 왼쪽 하단에 표시됩니다.
양식 필드와 그 시각화 즉, 위젯 사이에는 pdfs의 차이가 있음을 알아야합니다. 양식 필드에 시각화가 하나만있는 경우 양식 필드를 모델링하는 pdf 객체와 시각화를 모델링하는 pdf 객체를 단일 객체로 병합 할 수 있습니다. 이러한 병합 된 상황에서만 코드가 작동합니다. 반면 라디오 버튼 양식 필드는 양식 필드가 연결된 모든 라디오 버튼 그룹의 상태를 나타 내기 때문에 하나의 위젯 만 가지는 것은 거의 없습니다. – mkl
@ Tomm23 PDFDebugger로 파일을 보는 것이 가장 좋습니다. "내부 구조 표시"로 변경 한 다음 Root/AcroForm/Fields를 확인하십시오. 위젯을 다시 작성하고 필드를 얻은 다음'getWidgets()'를 호출 한 다음 각 위젯에서 직사각형을 가져옵니다 (직접 메소드가 있습니다). 예를 들어 https://issues.apache.org/jira/browse/PDFBOX-142의 파일에있는 라디오 버튼 (체크 표시와 비슷하지만 실제로는 라디오 버튼)은 9 개의 위젯을 가지고 있습니다 ('Root/AcroForm/Fields/[9]/Kids'. –
@ Tomm23 Tilman과 저의 의견은 도움이 되었습니까? 그렇다면 솔루션을 설명하는 질문에 대한 실제 답변을 만든 경우 유용합니다. 그렇지 않다면 무엇을 구체적으로 이해하지 못했습니까? – mkl