IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Exporter JTable en PDF


Sujet :

Composants Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Exporter JTable en PDF
    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..).

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    Ceci n'est surement ni parfait ni correcte mais au moins tu vois le tableau dans le PDF avec : (fait a l'arrache).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Document document = new Document();
    PdfWriter writer;
    writer = PdfWriter.getInstance(document, new FileOutputStream("ITextTest.pdf"));  
    document.open();    
    PdfContentByte cb = writer.getDirectContent();
    PdfTemplate tp = cb.createTemplate(1000, 1000);
    cb.addTemplate(tp,  0,0);
    PdfGraphics2D pg = new PdfGraphics2D(cb, 500,500);
    table.print(pg);
    pg.dispose();
    document.close();
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour ton aide. Malheureusement le pdf est toujours vide avec ce code.
    J'abandonne l'idée d'utiliser l'objet graphique, je pense que la meilleure solution est de créer directement un tableau avec la librairie itext et de remplir cellule par cellule.

Discussions similaires

  1. export jtable to xml et pdf
    Par firesahara dans le forum Composants
    Réponses: 1
    Dernier message: 18/11/2012, 22h26
  2. Exporter JTable en PDF
    Par javaNavCha dans le forum Composants
    Réponses: 2
    Dernier message: 30/12/2010, 09h46
  3. Réponses: 3
    Dernier message: 02/09/2007, 02h38
  4. [FPDF] Modifier un document Word et l'exporter au format PDF
    Par nicocsgamer dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/11/2005, 22h32
  5. exportation en format pdf
    Par nounou dans le forum Access
    Réponses: 6
    Dernier message: 10/12/2003, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo