2010-06-24 4 views
1

J'ai un fichier JFrame, que je souhaite enregistrer au format PDF. Comment peindre ce JFrame en utilisant iText?Peindre le composant Swing au format PDF en utilisant iText

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) { 
     // 
    } 
} 

Répondre

2

Cela devrait faire l'affaire (et il est générique pour objet 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

J'ai passé isntance d'objet JDialog à cette fonction. Il génère une erreur d'exception dans le module d'impression. Le document ne contient aucune page. ExceptionConverter: java.io.IOException: Le document ne comporte aucune page. à com.itextpdf.text.pdf.PdfPages.writePageTree (PdfPages.java:113) à com.itextpdf.text.pdf.PdfWriter.close (PdfWriter.java:1221) à com.itextpdf.text.pdf. PdfDocument.close (PdfDocument.java:810) at com.itextpdf.text.Document.close (Document.java:416) –

+0

Ceci est un morceau de code qui fonctionne dans iText 2.xxx – Jes

Questions connexes