iText : page events & variables globales

iText : page events & variables globales - Java - Programmation

Marsh Posté le 11-08-2005 à 11:02:31    

Salut à tous,
pour ceux qui utilisent iText (et pour les autres),
voila j'utilise la librairie iText pour générer des documents pdf,  
je construits entre autres des headers / footers qui sont construits dans la méthode onEndPage qui est déclenchée à chaque fin de page, pour les construire j'ai besoin de variables qui sont initalisées dans ma méthode principale qui construit le document (à partir d'une requete assez lourde que je veux pas répéter),
c'est simple me direz-vous : declarer une variable globale, l'initialiser dans la méthode principale et l'utiliser dans la méthode on endpage.
Seulement voila gros problème les méthodes déclenchées "onEventPage" ne partagent pas des variables globales avec les autres méthodes (j'ai testé et retesté), elles ne partagent des variables qu'entre elles...
 
Une idée qui m'empecherait de faire 2 fois la meme requete ??
 
merci d'avoir lu jusqu'a la fin ;-)

Reply

Marsh Posté le 11-08-2005 à 11:02:31   

Reply

Marsh Posté le 11-08-2005 à 16:43:56    

tu peux utiliser un PdfPageEventHelper :
 

Code :
  1. import com.lowagie.text.Document;
  2. import com.lowagie.text.pdf.PdfPageEventHelper;
  3. import com.lowagie.text.pdf.PdfWriter;
  4. public class MonEventHelper extends PdfPageEventHelper {
  5.     private <type1> parametre1;
  6.     private <type2> parametre2;
  7.    ...
  8.     public MonEventHelper(<type1> parametre1, <type2> parametre2) {
  9.         this.parametre1 = parametre1;
  10.         etc....
  11.     }
  12.     public void onStartPage(PdfWriter pdfWriter, Document document) {
  13.          //tu fais ce que tu veux ici
  14.     }
  15.     public void onEndPage(PdfWriter pdfWriter, Document document) {
  16.          //tu fais ce que tu veux ici
  17.     }


 
et dans le reste de ton code, tu files le helper au PdfWriter:

Code :
  1. pdfWriter.setPageEvent(new MonEventHelper(parametre1, parametre2));


 
ca suffit pas comme ca ?


Message édité par souk le 11-08-2005 à 16:44:28
Reply

Marsh Posté le 11-08-2005 à 16:46:11    

enfin, en étendant l'helper ou pas, l'idée est la même, non? j'ai pas bien vu ou était le problème [:petrus75]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 11-08-2005 à 16:48:21    

chaipa, je vais relire son post pour voir [:pingouino]
 

Reply

Marsh Posté le 11-08-2005 à 16:50:00    

the real moins moins a écrit :

enfin, en étendant l'helper ou pas, l'idée est la même, non? j'ai pas bien vu ou était le problème [:petrus75]


 
quelle idée est la même que quoi au fait ? [:dawa]  

Reply

Marsh Posté le 11-08-2005 à 18:18:10    

ben euh, encapsuler ses variables dans son listener quoi, plutot que d'esperer qu'elles soient "là" par magie :??:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 11-08-2005 à 18:40:41    

ah oui [:pingouino] c'est clairement la même idée [:joce]

Reply

Marsh Posté le 24-10-2009 à 16:50:24    

Bonjour,
 
J'ai le même soucis que fifou38:
J'ai un objet qui construit un PDF a partir d'informations diverses.
Pour accéder aux fonctionnalités des Header/footer j'ai du rajouter faire étendre PdfPageEventHelper() à mon objet (extends PdfPageEventHelper()).
Le hic c'est que depuis les méthodes on_XXX() du listener qui sont surchargées, on arrive pas a accéder aux valeurs des variables globales de l'objet qui étends le listener...  
 
@souk=>Non ca suffit pas...

Code :
  1. public void onStartPage(PdfWriter pdfWriter, Document document) {
  2. #          //tu fais ce que tu veux ici
  3. #          // ====>>>> NON !
  4. #     }


Car dans cette methode on ne voit pas les variables globales parametre1 et parametre2.... ou plus exatement ce ne sont pas celles du meme objet: elles sont donc nulles.
Il doit y avoir un walkaround, mais je le connais pas. Si kelk'un a l'idée,
Merci d'avance,
eXz


Message édité par existanz le 25-10-2009 à 08:42:39
Reply

Marsh Posté le 25-10-2009 à 08:46:34    

J'ai trouvé un truc...
Cela vient de l'initialisation du PdfWriter. Je faisais de la façon suivante:

PdfWriter catalogWriter = PdfWriter.getInstance(pdfCatalog, new FileOutputStream(CATALOGUE+"_"+cptDoc+".pdf" ));
catalogWriter.setPageEvent(new PdfCatalogCreator()) ;


Mon PdfCatalogCreator ne connaissait plus rien... évidement.
 
 
Comme l'indique souk, il faut passer les paramètres au nouvel objet crée et ecrire:

catalogWriter.setPageEvent(new PdfCatalogCreator(<Type> param1...)) ;


Et dans le constructeur les reaffecter...
 
eXz


Message édité par existanz le 25-10-2009 à 08:50:05
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed