2014-02-10 3 views
4

PDFBox 및 PDFPagePanel 구성 요소를 사용하여 PDF 페이지를 보는 방법을 파악할 수 없습니다.PDFBox의 PDFPagePanel을 사용하여 PDF 문서를 보는 방법

그래서 내 옵션 PDPage 개체 또는 PDDocument 객체의 목록을 작성하는 중입니다 PDFBox를 사용하여

다음 코드 (PDDocument 개체에 대한 Splitter()를 사용하여 반대), 나는 PDPage 목록에 갔어요 것 같다 나는 PDFPagePanel를 작성하고 구성 요소에 PDPage를 배치하기 위해 setPage() 방법을 사용하고 싶습니다 여기에서 testPage

File PDF_Path = new File("C:\\PDF.PDF"); 
PDDocument inputPDF = PDDocument.load(PDF_Path); 
List<PDPage> allPages = inputPDF.getDocumentCatalog().getAllPages(); 
inputPDF.close(); 
PDPage testPage = (PDPage)allPages.get(0); 

라는 PDPage 개체를 만듭니다. 여기에서 JFrame에 구성 요소를 추가하려고합니다. 이 작업을 수행하면 공백이 보입니다.

JFrame testFrame = new JFrame(); 
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
PDFPagePanel pdfPanel = new PDFPagePanel(); 
pdfPanel.setPage(testPage); 
testFrame.add(pdfPanel); 
testFrame.setBounds(40, 40, pdfPanel.getWidth(), pdfPanel.getHeight()); 
testFrame.setVisible(true); 

나는 converting the PDF to an image을 제안하고, 버퍼 이미지로 표시 한 '솔루션'을 발견하고,이 작동하는 동안이 작업을 수행하려면 올바른 방법은 아닌 것 같아. PDF를 표시하는 수단으로 PDFBox의 PDFPagePanel을 사용하는 데 올바르지 않습니까?

+0

PDDocument를 너무 일찍 닫지 않으려 고 시도 했습니까 (inputPDF.close())? 완료되면 PDDocument를 닫고 PDPage를 사용할 때가 아닙니다. –

+0

그래, 나도 그 제안을 주셔서 감사합니다. 어쨌든 내가 왜 그 라인을 넣었는지 정말로 모르겠다. 나는 코드를 복사 할 때 맨 아래에 놓았다. 지금은 단순히 PDFBox 메일 링리스트에 이메일을 보냈고 사용할 수있는 다른 옵션을 살펴 보겠습니다. 내가 모든 iText 나 ​​IcePDF 같은 다른 도구를 사용하는 것에 문제가 있어서는 안된다. 모든 소스 코드가 GitHub의 공용 저장소에 푸시되고 있기 때문에, 나는 라이센스와 공개를 다루는 어떤 종류의 클래스도 사용 해본 적이 없다. 소스 코드. –

답변

3

내가 inputPDF.close 호출을 주석 처리하면 괜찮습니다. pdf 표시가 끝나면 가까이로 이동하면 어떻습니까? 이런 식으로 뭔가 ... 공식적으로

testFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
testFrame.addWindowListener(new WindowAdapter() { 

@Override 
public void windowClosing(WindowEvent e) { 
    try { 
     inputPDF.close(); 
     testFrame.setVisible(false); 
    } catch (IOException e1) { 
     // TODO: implement error handling 
     e1.printStackTrace(); 
    } 
} 

}); 

, 나는 또한 인 JPanel에 싸여 구성 요소에 싸여의 BufferedImage로 PDFBox 뷰어를 구현했습니다. 그런 다음 페이지를 변경하고, 문서를 변경하고, 이미지를 "확대/축소"하거나 크기를 조정하는 추가 단추로 패널을 사용자 정의 할 수있었습니다.

+0

이 제안을 해주셔서 감사합니다. ICEpdf를 구현했지만 필요했던 것보다 약간의 추가 프로그램이 필요했습니다. –

관련 문제