2013-06-27 4 views
2

JAVA를 사용하여 PDF 양식을 채우려하지만, 아래 코드를 사용하여 필드를 가져 오려고하면 목록이 비어 있습니다. PDFBOX를 사용하여 PDF 파일을 읽을 수 없습니다.

PDDocument pdDoc = PDDocument.load(filename); 
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm(); 
List<PDField> field = pdform.getFields(); 

은 그 때 나는 PDFStripper

PDFTextStripper stripper = new PDFTextStripper(); 
System.out.println(stripper.getText(pdDoc)); 

을 사용하여 파일을 읽으려고하고 OUPUT는

는 "잠시 기다려주십시오 ...

이 메시지가 결국 교체하지 않을 경우 다음과 같이이었다 문서의 적절한 내용에 따라 PDF 뷰어에서이 유형의 문서를 표시하지 못할 수 있습니다.

Windows®, Mac 또는 Linux® 용 Adobe Reader 최신 버전을 (http://www.adobe.com/go/reader_download)으로 업그레이드 할 수 있습니다.

Adobe Reader에 대한 추가적인 지원은 http://www.adobe.com/go/acrreader을 방문하십시오.

Windows는 미국, 대한민국 및/또는 기타 국가에서의 Microsoft Corporation 등록 상표 또는 상표입니다. Mac은 미국 및 기타 국가에서 Apple Inc.의 상표 입니다. Linux는 Linus Torvalds의 미국 및 기타 국가의 등록 상표입니다. "

파일을 수동으로 열어서 필드를 채울 수 있습니다. iText와 같은 다른 도구도 사용해 보았습니다. 나는 필드를 얻을 수 없습니다. 나는이 문제를 해결하려면 어떻게해야합니까?

답변

0

는 대답을하지만, 어쨌든 당신의 PDF 파일은 XFA 구조가있는 경우 왜. 당신은 빈 목록을 얻을 수 너무 늦기 수 있음.

PDDocument pdDoc = PDDocument.load(filename); 
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm(); 
List<PDField> field = pdform.getFields(); 

pdf로 작업을 시작하려면 다음 코드 줄을 사용하십시오.

PDXFA xfa = pdform.getXFA(); 
Document xfaDocument = xfa.getDocument(); 
NodeList elements = xfaDocument.getElementsByTagName("SomeElement"); 
+0

그런지 여부를 어떻게 확인할 수 있습니까? – kutschkem

+0

다음 'if'문을 사용하십시오. if (pdform.getFields(). isEmpty) {// XFA case} else {// AcroForm case}' – Paul

관련 문제