2013-05-08 2 views
2

내 응용 프로그램에서는 Apache PDFBox를 사용하여 PDF 파일을 렌더링하고 자동으로 정상적으로 인쇄합니다.Apache PDfBox에서 페이지 배율 옵션을 설정하는 방법

PDFBox는 PFD를 렌더링하는 데는 문제가 없지만 이라는 문제가 발생합니다. 여기에 PDF를 인쇄하기 전에 페이지 크기를 설정하고 싶습니다.

Acrobat Reader의 인쇄 팝업에서 PDF 인쇄를위한 네 가지 옵션이 있습니다. 1> 실제> 2 맞춤 크기 3> 이상 축소 크기의 페이지 4> 사용자 정의 스케일

여기에 나는 실제 크기로 페이지 배율을 설정하고자합니다. 어떻게 아파치 POI를 사용하여 그것을 할 수 있습니까 ??

+0

난 ... 그것은하지만 회로 –

+0

@HardikBhalani .. 그물에 더 나은 솔루션을 사용할 수있는 당신에게 대신의이 iText API를 제안하고 싶습니다, – Mirco

+0

당신이 iText를 자사의 솔루션 당신이하는 것보다에 대해 얘기하는 무료입니다 맞아 (몰라) 그렇지 않으면 iText는 자바에서 PDF를위한 오픈 소스 라이브러리이다. –

답변

2

나는이 똑같은 문제가 있었는데, 나는이 단순한 일을하기가 너무 어려웠던 것처럼 느꼈다. 비록 이상적이지는 않지만 결국 PDFBox 인쇄를 사용하지 않고 다음과 같이 해결했습니다.

다음 코드는 페이지를 한 번에 하나씩 이미지로 변환하고 java2d를 사용하여 크기를 조정하고 인쇄합니다.

PDDocument pdfdoc = PDDocument.load(pdfPane.pdfFile); 
@SuppressWarnings("unchecked") 
final List<PDPage> pdfPages = pdfdoc.getDocumentCatalog().getAllPages(); 

PrinterJob pjob = PrinterJob.getPrinterJob(); 
pjob.setJobName(pdfPane.pdfFile.getName()); 
pjob.setPrintable(new Printable() 
{ 
    @Override 
    public int print(Graphics g, PageFormat pf, int page) throws PrinterException 
    { 
    if (page > pdfPages.size()) 
     return NO_SUCH_PAGE; 
    try 
    { 
     g.drawImage(pdfPages.get(page).convertToImage() 
       ,(int)pf.getImageableX() 
       ,(int)pf.getImageableY() 
       ,(int)pf.getImageableWidth() 
       ,(int)pf.getImageableHeight() 
       ,null); 
    } 
    catch (IOException e) 
    { 
     LoggerUtil.error(e); 
    } 
    return PAGE_EXISTS; 
    } 
}); 
pjob.print(); 
pdfdoc.close(); 
관련 문제