Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] TCPDF optimisation code

Posted by Jihel on 08/31/2009 10:18

Bonjour à tous

Après quelque éloignement du web pour raison de santé (pas beau de vieillir !) je reprends mon prog où je génère un fichier pdf avec TCPDF. A plusieurs reprises dans l'action qui génère ce pdf, le même bloc d'instructions est répété pour ajouter des éléments à l'objet TCPDF.

 $rep->tcpdf->AddPage();
 $rep->tcpdf->Image( JELIX_APP_PATH.'www/jelix/design/images/xxx.jpg', 10,7,0,0, "JPEG","","",0,75,"",0,0,0);
 $rep->tcpdf->SetFont("dejavusanscondensed", "B", 14);
 $rep->tcpdf->cell(70,4,"","",1,"L",0,0,0);
 $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
 $rep->tcpdf->SetTextColor(106,180,165,0);
 $rep->tcpdf->cell(100,6,"xxxxxxx","",1,"L",0,0,0);
 $rep->tcpdf->SetFont("dejavusanscondensed", "", 10);
 $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
 $rep->tcpdf->cell(100,4,"xxxxxxx","",1,"L",0,0,0);
 $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
 $rep->tcpdf->cell(100,4,"2xxxxx","",1,"L",0,0,0);
 $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
 $rep->tcpdf->cell(100,4,"Tél. : xxxxx","",1,"L",0,0,0);
 $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
 $rep->tcpdf->cell(100,4,"Fax  : xxxx","",1,"L",0,0,0);
 $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
 $rep->tcpdf->cell(100,4,"Email  : xxxxx","",1,"L",0,0,0);
 $rep->tcpdf->SetTextColor(0,-1,-1,0);
 $rep->tcpdf->setDrawColor(192,-1,-1);
 $rep->tcpdf->cell(200,4,"","",1,"L",0,0,0);
 $rep->tcpdf->cell(200,0,"","1",1,"L",0,0,0);
 $rep->tcpdf->ln(2); 

je voudrais copier ce bloc d'instructions dans une fonction à part pour l'intégrer au moment voulu dans l'action afin d'ajouter les instructions TCPDF adéquates, sans multiplier les lignes de code (difficiles à maintenir) (un peu comme un sous-programme - bonjour le dinosaure ! -)

J'ai créé une fonction dans mon controleur, qui récupère la réponse tcpdf puis ai tenté d'ajouter les instructions nécessaires pour ajouter à tcpdf mais sans succès.

 protected function entete(){
    $rep = $this->getResponse('tcpdf');
    $rep->tcpdf->AddPage();
    $rep->tcpdf->Image( JELIX_APP_PATH.'www/jelix/design/images/xxx.jpg', 10,7,0,0, "JPEG","","",0,75,"",0,0,0);
    $rep->tcpdf->SetFont("dejavusanscondensed", "B", 14);
    $rep->tcpdf->cell(70,4,"","",1,"L",0,0,0);
    $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
    $rep->tcpdf->SetTextColor(106,180,165,0);
    $rep->tcpdf->cell(100,6,"xxxxxxx","",1,"L",0,0,0);
    $rep->tcpdf->SetFont("dejavusanscondensed", "", 10);
    $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
    $rep->tcpdf->cell(100,4,"xxxxxxx","",1,"L",0,0,0);
    $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
    $rep->tcpdf->cell(100,4,"2xxxxx","",1,"L",0,0,0);
    $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
    $rep->tcpdf->cell(100,4,"Tél. : xxxxx","",1,"L",0,0,0);
    $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
    $rep->tcpdf->cell(100,4,"Fax  : xxxx","",1,"L",0,0,0);
    $rep->tcpdf->cell(70,4,"","",0,"L",0,0,0);
    $rep->tcpdf->cell(100,4,"Email  : xxxxx","",1,"L",0,0,0);
    $rep->tcpdf->SetTextColor(0,-1,-1,0);
    $rep->tcpdf->setDrawColor(192,-1,-1);
    $rep->tcpdf->cell(200,4,"","",1,"L",0,0,0);
    $rep->tcpdf->cell(200,0,"","1",1,"L",0,0,0);
    $rep->tcpdf->ln(2); 
    return $rep;    
 }

insertion dans l'action du controleur, en remplacement des lignes supprimées :

 $rep = $this->entete();

J'ai bcp de mal avec la notion d'objet, aussi pourriez-vous svp m'aiguiller sur la voie à suivre pour parvenir à ce type de résultat ? je suis convaincu que cela doit être simple et élémentaire, mais cela m'échappe totalement. Je vous remercie vivement de votre aide généreuse Cordialement Jihel

  [Opened] Re: TCPDF optimisation code

Reply #1 Posted by laurentj on 09/01/2009 14:59

salut,

bah après ton

  $rep = $this->entete();

tu continue..

  $rep->tcpdf->jesaispasquoi()
  ...
  return $rep;

  [Opened] Re: TCPDF optimisation code

Reply #2 Posted by laurentj on 12/02/2009 13:26

tu fais

  $rep->tcpdf->Text(20,10,'PAGE 1');

suivi d'un

   $rep=$this->entete();

en faisant ça, ta variable $rep est écrasé par ce qui est renvoyé par entete(), donc tu perd tout ce que tu as fait avant. Faut faire plutot un truc dans le genre.

 class pdfessaiCtrl extends jController {
  function pdf(){
   $rep=$this->getResponse('tcpdf');
   $rep->tcpdf = jClasses::createInstance('mypdf');
   $file="essai.pdf";
   $rep->outputFileName = $file;
   $rep->doDownload = true;  
   $rep->initPdf();
   $rep->tcpdf->AddPage();
   $rep->tcpdf->Text(20,10,'PAGE 1');
   $this->entete($rep);
   $rep->tcpdf->AddPage();
   $rep->tcpdf->Text(20,10,'PAGE 3');
   return $rep;
  }   
  function entete($rep){
   $rep->tcpdf->AddPage();
   $rep->tcpdf->Text(20,10,'PAGE 2');
  }
 }

conçernant l'erreur proprement dite, je pense que ça se passe dans ta classe mypdf car à part ça, je ne vois pas d'où ça peut venir... Et à priori, tu donnes un mauvais chemin pour ton image : il ne la trouve pas.

voir la doc de tcpdf (cf google)

 
Page
  1. TCPDF optimisation code