2009-01-08 15 views
4

Je voudrais imprimer mon composant Swing JComponent via iText en pdf.Comment peindre des composants Swing dans un fichier PDF avec iText?

JComponent com = new JPanel(); 
com.add(new JLabel("hello")); 

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dFile)); 
document.open(); 

PdfContentByte cb = writer.getDirectContent(); 
PdfTemplate tp = cb.createTemplate(pageImageableWidth, pageImageableHeight); 
Graphics2D g2d = tp.createGraphics(pageImageableWidth, pageImageableHeight, new DefaultFontMapper()); 
g2d.translate(pf.getImageableX(), pf.getImageableY()); 
g2d.scale(0.4d, 0.4d); 
com.paint(g2d); 
cb.addTemplate(tp, 25, 200); 
g2d.dispose(); 

Malheureusement rien n'est affiché dans le fichier PDF. Savez-vous comment résoudre ce problème?

Répondre

4

J'ai compris comment ajouter addNotify et valider les aides.

 
    com.addNotify(); 
    com.validate(); 
+0

Oui. JavaDoc de addNotify() dit qu'il "ne devrait pas être appelé directement par les programmes", mais en pratique, il est nécessaire dans un contexte sans tête (exportation sans interface graphique). Sinon, les enfants du composant ne sont pas disposés et gardent une taille de zéro. – PhiLho

1

Je ne sais pas grand-chose sur iText, mais ... vous avez fermé le PdfWriter à un moment donné, non?

+0

oui, écrivain est fermé! – Jonas

2

je devais appeler

com.addNotify() 
com.setSize() 
com.validate()