Bonjour,
Dans mon programme, je génère un JPanel que je veux transformer en pdf. Je récupère une java.awt.Image que je transforme en import com.lowagie.text.Image, puis je l'ajoute à mon document.
Mon premier souci c'est que je suis obligé d'affiché mon panel dans une JFrame pour pouvoir récupérer l'image (le repaint() ne suffit pas).
Mon deuxième problème, le sujet de la discussion, c'est que, si le pdf est bien créé, je n'ai qu'un morceau de l'image : une partie est "en dehors" du pdf et une partie est entièrement noire. De plus la compression rend la lecture difficile (mon "image est en fait le texte d'un JEditorPane).
Et le troisième (et dernier, pour le moment) truc que je ne comprends pas : mon application ne s'arrête pas. Les fonctions se terminent, j'arrive à la fin de ma fonction main mais Netbeans continue à tourner jusqu'à ce que je le stoppe de force.
Mon souci principal reste le 2ème mais bon, tout peut-être lié alors si vous aviez des éclaircissements quelqu'ils soient je vous en remercie d'avance !
Et pour vous aider à m'aider, je vous laisse le code de la fonction d'archivage (avec en plus, ma gestion hyper pointue des bugs, à base de "coucou") :
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 public File archiver(){ MonPanel panel = new MonPanel(this); JFrame f1 = new JFrame(); f1.setContentPane(panel); f1.pack(); f1.setVisible(true); f1.setVisible(false); //f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); java.awt.Image awtImage = panel.getImage(); /*AfficheImage aff = new AfficheImage(awtImage); JFrame f = new JFrame(); f.setContentPane(aff); f.pack(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/ //génération du document PDF PdfWriter writer = null; Document document = new Document(PageSize.A4, 10, 10, 45, 30); //Format A4 com.lowagie.text.Image img = null; //com.lowagie.text File archive = null; try { try { img = com.lowagie.text.Image.getInstance(awtImage, null, false); //TODO afficher l'image pour voir si elle est toute noire } catch(final IOException e) { e.printStackTrace(); } try { archive = creerArchive(); } catch(Exception e) { e.toString(); } try { FileOutputStream fos = new FileOutputStream(archive); try { writer = PdfWriter.getInstance(document, fos); writer.setViewerPreferences(PdfWriter.PageLayoutOneColumn); //ouverture du document try { document.open(); System.out.println("coucou !"); PdfContentByte pcb = writer.getDirectContent(); //ajout graphique //img = com.lowagie.text.Image.getInstance(pcb, awtImage, 1.0f); img.setAbsolutePosition(10,20); System.out.println("coucoubis !"); //pcb.addImage(img); document.add(img); System.out.println("coucou ?"); } finally { document.close(); System.out.println("fermeture de coucou"); } } finally { writer.close(); System.out.println("fermeture de writer"); } } catch(final Exception e_pdf) { e_pdf.printStackTrace(); } } catch(final Exception e) { e.printStackTrace(); } System.out.println("fin d'archivage"); return archive; }
Partager