Bonjour,

Je n'arrive pas à afficher mon JTable dans un fichier pdf grâce à la librairie itext.
Ce code trouvé sur google est censé fonctionner, mais rien ne s'affiche dans ma page.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.awt.BorderLayout;
import java.awt.Graphics2D;
import java.io.FileOutputStream;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
 
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;
 
public class MainClass extends JFrame{
	private static final long serialVersionUID = 1L;
	private JTable table;
 
	public static void main(String[] args) throws Exception {
		MainClass frame = new MainClass();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}
 
	@SuppressWarnings("deprecation")
	public MainClass() throws Exception {
		getContentPane().setLayout(new BorderLayout());
 
		Object[][] data = { { "A", "B", "C", new Integer(5), new Boolean(false) },
				{ "D", "E", "F", new Integer(3), new Boolean(true) } };
 
		String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian" };
 
		table = new JTable(data, columnNames);
 
		JPanel tPanel = new JPanel(new BorderLayout());
		tPanel.add(table.getTableHeader(), BorderLayout.NORTH);
		tPanel.add(table, BorderLayout.CENTER);
 
		getContentPane().add(tPanel, BorderLayout.CENTER);
 
		Document document = new Document();
		PdfWriter writer;
 
		writer = PdfWriter.getInstance(document, new FileOutputStream("ITextTest.pdf"));  
		document.open();    
 
		PdfContentByte cb = writer.getDirectContent();
		cb.saveState();
		PdfTemplate tp = cb.createTemplate(500, 500);
		Graphics2D g2;
		g2 = tp.createGraphicsShapes(500, 500);
		table.print(g2);
		g2.dispose();
		cb.addTemplate(tp, 30, 300);
		cb.restoreState(); 
 
		document.close();
	}
}
J'ai essayé plusieurs manières différentes mais rien n'y fait, rien ne s'affiche
createGraphics est "déprécié" par java, la doc dit d'utiliser "pdfprintergraphics2d" mais ça me donne le même résultat (à moins que je l'utilise mal..).