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

Langage Java Discussion :

problème d'appel d'une fonction d'une autre classe


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut problème d'appel d'une fonction d'une autre classe
    Bonjour,

    J'ai une classe PdfGenerique ou j'ai une méthode qui effectue une fusion de Pdf.
    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
     
    package com.promotelec.saisieCR.utilitaires;
     
    import java.io.FileOutputStream;
    import java.io.IOException;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.pdf.BaseFont;
    import com.lowagie.text.pdf.PdfContentByte;
    import com.lowagie.text.pdf.PdfReader;
    import com.lowagie.text.pdf.PdfStamper;
     
     
    public class PdfGenerique {
     
    // attributs	
     
    // méthodes	
     
     
     
    	public static void remplissagePDF(String FormVide, String FormRempli){
     
    		       FormRempli = ("C:\\Temp\\pdfRempli\\pdf_rempli.pdf");
    		       FormVide = ("C:\\Temp\\pdfVide\\pdf_vierge.pdf");
     
    		try {	
     
    			PdfReader reader = new PdfReader(FormVide);		//lecture PDF		
    			PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(FormRempli));	//Sauvegarde d'un nouveau PDF	
     
    			PdfContentByte content = stamper.getOverContent(1);
    			content.beginText();//on ouvre le content pour écrire dans le PDF
    			// On ajoute une chaine, on détermine la police, la taille te la position
    			BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);			
    	            content.setFontAndSize(bf, 12);
    	            String text = "Livinfo";
    	            content.showTextAligned(PdfContentByte.ALIGN_CENTER, text , 250, 700, 0);							
    	    	content.endText();// On ferme le content
    	    	stamper.close();// On ferme le stamper			
     
    		}catch (IOException ioe) {
    			ioe.printStackTrace();
    		}catch (DocumentException doce) {
    			doce.printStackTrace();}
    		}
     
     
     
    	}
    Bien évidemment je voudrais appelé cette méthode au lancement de mon appli. Donc dans une autre classe je fais appel à cette méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PdfGenerique.remplissagePDF(FormVide, FormRempli);
    Mais au lancement de mon appli, aucun PDF ne se crée. Pourtant je n'ai aucune erreur dans mon code. Ai-je fais une erreur dans mon appel? Car testé indépendemment dans un autre projet avec juste une fonction main, sa fonctionne. Donc je suppose que j'ai un problème dans l'appel de ma méthode.

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Soit un de t'es dossiers n'existe pas :


    C:\Temp\pdfRempli\
    C:\Temp\pdfVide\

    Soit ton pdf d'entrée n'est pas accessible.


    FormRempli = ("C:\\Temp\\pdfRempli\\pdf_rempli.pdf");
    FormVide = ("C:\\Temp\\pdfVide\\pdf_vierge.pdf");
    Pourquoi passes-tu des parametres si c'est pour les initialiser dans ta méthode???


    Si ca marche dans une methode main ca doit marcher la. C'est exactement pareil. Tu as surement oublié quelque chose par rapport à ta méthode main.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  3. #3
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Comment cela?

    Je n'ai pas pu voir la fin de ton message.
    Mes dossiers existent bien en tout cas.

  4. #4
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    SAlut,

    ben je voulais les initialiser dans le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private static    String FormVide ;
    private static    String FormRempli ;
     
    public Test(String FormVide, String FormRempli){
    			FormRempli = "C:\\Temp\\pdfRempli\\pdf_rempli.pdf";
    			FormVide = "C:\\Temp\\pdfVide\\pdf_vierge.pdf";
    		}

    mais après j'ai une erreur dans la console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exception in thread "main" java.lang.NullPointerException
    at accessdata.Test.remplissagePDF(Test.java:45)
    :
    qui représente cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PdfReader reader = new PdfReader(FormVide);
    edit 1 : Sinon pour la petite infos, c'est sur un bouton swt que j'appelle cette méthode en fait. Pour que quand je clique sa me génère mon pdf. Est-ce que le blocage pourrait venir de là?

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Lu,

    Il est trop zarb ton constructeur, ton pb vient de là : dans le code du constructeur, quand tu utilises FormRempli et FormVide, tu fais en fait référence aux paramètres du constructeur. Donc tu modifies la valeur de ces paramètres et pas les variables d'instance. Tu ne modifies donc jamais tes variables d'instance. Du coup, après, quand tu veux utiliser ces variables d'instance, ben elles sont vides, donc tu récupères null et c'est la meme.

    Je ferais plutôt un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private String FormVide ;
    private String FormRempli ;
     
    public Test(String FormVide, String FormRempli){
    			this.FormRempli = FormRempli;
    			this.FormVide = FormVide;
    		}
    Et après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Test("C:\\Temp\\pdfVide\\pdf_vierge.pdf", "C:\\Temp\\pdfRempli\\pdf_rempli.pdf");

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Salut _MAC_

    Merci beaucoup. C'est déjà plus propre. Bon par contre l'ppel de cette méthode dans une autre classe et sur un composant SWT c'est autre chose.Pas d'erreur mais sa ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    terminer.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    				public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     
     
    PdfGenerique.remplissagePDF("C:\\Temp\\pdfVide\\pdf_vierge.pdf", "C:\\Temp\\pdfRempli\\pdf_rempli.pdf");
    }
    					}
     
    				);
    Une petite idée?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Appel d'une fonction dans une fonction (sql server 2005)
    Par catchouse dans le forum Développement
    Réponses: 10
    Dernier message: 06/05/2009, 12h03
  3. getattr() ? Appel d'une fonction depuis une fonction
    Par frites.saucisse dans le forum Général Python
    Réponses: 8
    Dernier message: 10/10/2008, 14h21
  4. Appeler une fonction dans une fonction
    Par bryanstaubin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2007, 09h39
  5. Appel d'une fonction dans une iframe sur un autre domaine
    Par morikann dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/06/2007, 18h46

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