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

 Java Discussion :

Inserer graph avec itextPDF


Sujet :

Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut Inserer graph avec itextPDF
    Bonjour,
    j'ai dans un programme une fonction qui dessine un graphique avec des données calculées au préalable et qui me place ce graphique dans un jpanel afin de l'afficher dans une fenêtre.

    J'aimerais "copier" ce graphique une fois dessiner dans un rapport PDF que je génère à la fin, à l'aide de Itext. Mais voila, je ne vois pas comment faire

    Voici ma commande dessine_graph :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spider_graph spider = new spider_graph(score_1, score_2, score_3,spider_panel);
    Elle me dessine un spider_graph dans un Jpanel (spider_panel) avec les données score_x.

    D'après la doc, pour charger une image, il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image monImg = Image.getInstance("src/mon_image.gif");
    Mais vu que mon image n'est pas sur le disque, je ne sais pas commment faire.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    De la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image iTextImage = Image.getInstance(myBufferedImage, null);

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Cela ne fonctionne pas : myBufferedImage cannot be resolved to a variable...

    Je précise que mon graph est créé avec une classe a part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class spider_graph extends JFrame{
     
    	public spider_graph(double score_1, double score_2, double score_3, JPanel spider_panel) {
     
    blablabla
     
    	// Affichage 
        ChartPanel chartPanel = new ChartPanel(jfreechart);
        spider_panel.setLayout(new GridLayout());
        spider_panel.add(chartPanel);
     
    }
    }
    Comment aller le chercher ? En utilisant des arguments ?

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    En utilisant un getter? Puis la classe ChartUtilities pour l'encoder...

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah c'était un exemple.

    Dans ton cas, bien sûr que la variable maBufferedImage n'existe pas. Faut que tu remplaces par l'Image AWT ou la BufferedImage de ton spider_graph.

    Un peu d'autonomie et de réflexion, que diantre!
    De toute façon je ne savais même pas comment s'appelle ton image vu que tu ne le donne nulle part.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Voici ce que j'ai essayé :

    Dans ma class spider_graph, j'instancie un jfreechart, puis juste après la ligne d'éxécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JFreeChart jfreechart = new JFreeChart("Représentation graphique des résultats", TextTitle.DEFAULT_FONT, spiderwebplot, false);
    je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.jfreechart=jfreechart;
    Donc, j'ai mon graphique dans jfreechart normalement.

    Dans ma fenetre en cours, j'appelle ma méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spider_graph  spider= new spider_graph(score_1, score_2, score_3,spider_panel);
    et j'enregistre dans un BufferedImage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedImage chart = spider.jfreechart.createBufferedImage(40, 40);
    j'entre l'image dans ma méthode Rapport :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Creation_rapport monrapport = new Creation_rapport(chart)
    puis avec ta ligne de tout à l'heure, dans Rapport :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Image iTextImage = Image.getInstance(chart, null);
    			d.add(iTextImage);
    Mais, j'ai plein d'erreurs( style java.lang.NullPointerException)
    Je tatonne énormément, donc j'ai certainement fais une(des?) mauvaise commande quelque part ...

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Fais voir la trace de ta NullPointerException. A quelle ligne de ton code se produit-elle?

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Alors, j'ai des erreurs ici :
    Dans la méthode rapport à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Image iTextImage;
    		try {
    			iTextImage = Image.getInstance(chart, null);
    			d.add(iTextImage);
    }
    Et j'ai :
    at java.awt.image.PixelGrabber.<init>(Unknown Source)
    at com.itextpdf.text.Image.getInstance(Image.java:622)
    at com.itextpdf.text.Image.getInstance(Image.java:783)
    (Not a valid line number)

    Dans ma fenêtre, dans l'action listenner du bouton "générer rapport" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Creation_rapport monrapport = new Creation_rapport(chart)


    Je ne suis pas certain si mon point de départ est bon avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedImage chart = spider.jfreechart.createBufferedImage(40, 40);

  9. #9
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Un exemple qui je l'espère compile (pas écrit dans un IDE, j'ai pas les libs sous la main)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
     
    ChartUtilities.writeChartAsJPEG(baos, tonChart, largeur, hauteur);
     
    Image monITextImage = Image.getInstance(baos.toByteArray());
    Y a plein de façon de faire (et sans doute des meilleures), le point de départ reste de lire la javadoc:

    http://www.jfree.org/jfreechart/api/javadoc/index.html
    http://api.itextpdf.com/

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Super, cela fonctionne !
    Bien que je ne comprenne pas le rôle de la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    (Mais je vais me renseigner).

    Sinon, bon, l'image manque de qualité ( elle est un peu flou). Est-ce dû au JfreeChart qui ne n'a pas une assez haute résolution ou bien à mon redimensionnement final ?

  11. #11
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Probablement à ton redimensionnement. Comment procèdes tu pour le faire?

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Je n'utilise pas de commande particulière.
    Je modifie la taille d'affichage avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChartUtilities.writeChartAsJPEG(baos, chart, 200, 200);

Discussions similaires

  1. Graph avec plusieurs courbes - GD
    Par vargasvan dans le forum Modules
    Réponses: 4
    Dernier message: 11/05/2006, 13h47
  2. Mysql & mrtg : faire un graphe avec le contenu d'une tab
    Par fouhaa dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 12/08/2005, 12h38
  3. Graphe avec java
    Par alamihamza dans le forum 2D
    Réponses: 3
    Dernier message: 07/03/2005, 17h14
  4. [NetBeans] graphe avec netBeans :?:
    Par sofien dans le forum NetBeans
    Réponses: 1
    Dernier message: 28/02/2005, 19h54
  5. Affichage graphe avec DBChart
    Par grominetos dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/06/2004, 19h17

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