2010-06-24 7 views
1

PDF로 저장하려는 JFrame이 있습니다. iText를 사용하여이 JFrame을 페인트하는 방법은 무엇입니까?iText를 사용하여 스윙 구성 요소를 PDF로 페인트

public PrintFrameToPDF(JFrame bill) { 
    try { 
     Document d = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream ("sample.pdf")); 

     d.open(); 

     // HOW ? 

     d.close(); 
    } 
    catch(Exception e) { 
     // 
    } 
} 

답변

2

이 트릭을 할해야한다 (그리고 JComponent의 개체에 대한 일반의가) :

public PrintFrameToPDF(JFrame bill) { 
    try { 
     Document d = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream ("sample.pdf")); 
     d.open(); 

     PdfContentByte cb = writer.getDirectContent(); 
     PdfTemplate template = cb.createTemplate(width, height); 
     Graphics2D g2d = template.createGraphics(width, height); 
     bill.print(g2d); 
     bill.addNotify(); 
     bill.validate(); 
     g2d.dispose(); 

     d.close(); 
    } 
    catch(Exception e) { 
     // 
    } 
} 
+0

나는이 기능에 JDialog를 개체의 isntance를 통과했다. 인쇄 모듈에 예외 오류 발생 html 문서에 페이지가 없습니다. ExceptionConverter : java.io.IOException : 문서에 페이지가 없습니다. com.itextpdf.text.pdf.PdfPages.writePageTree (PdfPages.java:113) at com.itextpdf.text.pdf.PdfWriter.close (PdfWriter.java:1221) at com.itextpdf.text.pdf. PdfDocument.close (PdfDocument.java:810) com.itextpdf.text.Document.close (Document.java:416) –

+0

이것은 iText 2.xxx에서 작동하는 코드 조각입니다. – Jes

관련 문제