2012-01-04 29 views
1

我有一個框架,並且上面有幾個組件。我如何使用iText繪製這個JFrame?使用iText將Swing組件導出爲PDF

我寫一些代碼如下(但不工作):

public void PrintFrameToPDF(Component c, File file) { 
    try { 
     Document d = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(file)); 
     d.open(); 

     PdfContentByte cb = writer.getDirectContent(); 
     PdfTemplate template = cb.createTemplate(c.getWidth(), c.getHeight()); 
     Graphics2D g2d = template.createGraphics(c.getWidth(), c.getHeight()); 
     c.paintAll(g2d); 
     c.addNotify(); 
     c.validate(); 
     g2d.dispose(); 

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

「不行」是什麼意思? – Paul 2012-01-04 18:08:15

+0

http://stackoverflow.com/questions/25579480/how-to-export-jpanel-with-scrollable-into-pdf-file兄弟,請看這個解決方案, – 2015-11-21 06:49:38

回答

1

首先createTemplate使用自己單位:

createTemplate(PageSize.A4.getHeight(), PageSize.A4.getWidth()); 

你可以使用:

g2d.translate(48.0, 48.0); 

而且刪除addNotify並驗證。特別是如你所說的getHeight,驗證是沒有意義的。 g2d.dispose做完之後:

cb.addTemplate(template, 0, 0); 
+0

Joop Eggen - Waht you mean by g2d.translate( 48.0,48.0)對於我來說,新的Pdf是一些框架內容,但不完全可見。 – 2013-03-07 18:12:40

+0

g2d.translate將內容向上和向右推到邊緣。你必須親自看看,對不起。 – 2013-03-07 19:03:15

+0

或任何其他方式來捕捉JFrame並適合PDf – 2013-03-08 04:41:34