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

Bibliothèques et frameworks PHP Discussion :

[TCPDF]Créer des pdf et avoir le mème header et footer apres pagebreak()


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut [TCPDF]Créer des pdf et avoir le mème header et footer apres pagebreak()
    bonjour, j'utilise tcpdf pour générer mon ducument pdf.
    chaque page de mon document a son header et footer:jusque la c'est bon .
    Mais voila quand les données que je veux afficher dans une page est grande une autre page et créer(car j'ai $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM) mais sans mes header et footer .
    je voudrai savoir comment lui indiquer de conserver les memes header et footer à la création d'une autre page.Voila le bout mon code
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    public function executeGeneratepdf()
    	{
     
    		$doc_title    = "test title";
    		$doc_subject  = "test description";
    		$doc_keywords = "test keywords";
     
    		$html1='<br><br><br><br><br><br><br>br><br><br><br><br><div style="color:#CC0001;font-size:60px;text-align:center;">';
    		$html = '<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div style="color:#CC0001;font-size:60px;text-align:center;">';
    		$html .='<br><br><br><br><br><br><br><br><br><br><br><br><div style="color:#666666;font-size:25px;text-align:left;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    		//create new PDF document (document units are set by default to millimeters)
    		$pdf = new AbsencePDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true);
     
    		//set auto page breaks
    		$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
     
    		// set document information
    		$pdf->SetCreator(PDF_CREATOR);
    		$pdf->SetAuthor(PDF_AUTHOR);
    		$pdf->SetTitle($doc_title);
    		$pdf->SetSubject($doc_subject);
    		$pdf->SetKeywords($doc_keywords);
     
    		// remove page header/footer
    		$pdf->setPrintHeader(false);
    		$pdf->setPrintFooter(false);
     
    		//initialize document
    		$pdf->AliasNbPages();
    		$pdf->AddPage();
    		$pdf->Image(K_PATH_IMAGES.'left.gif', 5, 5, 20,285, '', 'http://www.tcpdf.org', '', true, 150);
    		$pdf->Image(K_PATH_IMAGES.'zergez.gif', 40,20, 50);
    		// output some HTML code
    		$pdf->writeHTML($html, true, 0, true, 2);
     
     
    		$pdf->AddPage();
    		$pdf->Header("blablabla","blablabla");
    		$pdf->Footer("blablabla");
     
     
    		$pdf->AddPage();
    		$pdf->Header("blablabla","blablabla");
     
     
    		$pdf->writeHTML($html1, true, 0, true, 2);
     
    /* ici puisque $html1 est grande la page créer n'a pas de header et footer je veux q'elle conserve ceux de cette page*/	
     
     
     
    		$pdf->Footer("blablabla");
     
     
     
     
     
     
     
    		$pdf->AddPage();
    		$pdf->Header("blablabla","blablabla");
    		$pdf->Footer("blablabla");
     
     
    		$pdf->AddPage();
    		$pdf->Header("blablabla","blablabla");
    		$pdf->Footer("blablabla");
     
     
    		$pdf->AddPage();
    		$pdf->Header("blablabla","blablabla");
    		$pdf->Footer("blablabla");
     
     
    		$pdf->AddPage();
    		$pdf->Header("blablabla","blablabla");
    		$pdf->Footer("blablabla");
     
     
    		//Close and output PDF document
    		$pdf->Output();
     
    		return sfView::NONE;
    Quand je génère $html1 la 2 ème page est sans header et footer !!
    quelqu'un a une idée?

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    Salut,

    Je crois que c'est dans les méthodes Header et Footer de TCPDF qu'il faut définir le header et le footer. En les redéfinissant dans AbsencePDF (dans ce cas ci).

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    j'ai toujours pas trouver de solution
    je veux indiquer au générateur de générer une 2 eme page avec les memes header et footer que la précédente et je suis coinser
    y'a t'il des idée ou bien des bouts de code

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    J'ai oublié de dire que AddPage appel automatiquement les méthodes header et footer de TCPDF.

    Est-ce que tu as déjà redéfinis les méthodes Header et Footer ? Je suppose que oui si elle attendent des paramètres.

    Si tu veux obligatoirement passer des paramètres aux méthodes, il va falloir continuer comme c'est pour le moment. Ou alors passer les paramètres à AddPage qui lui va les passer a Header et Footer (mais ça implique de réimplémenter AddPage également).

    L'autre solution c'est ce que je te proposais, mais en fait c'est déjà presque le cas. Le seul problème c'est les paramètres. Ces paramètres peuvent êtres codés en dur dans les méthodes Header et Footer. Ainsi il ne faut plus passer de paramètre et donc AddPage appellera automatiquement Header et Footer qui n'attendent aucuns paramètres.


    Donc pour ajouter une nouvelle page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->AddPage(); // Ce qui appel automatiquement $pdf->Header() et $pdf->Footer()
    Et avec, dans AbsencePDF, les méthodes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class AbsencePDF extends TCPDF{ 
            protected $headerTitle = ''; // Pour pouvoir générer un header dynamiquement, à n'importe quel moment on spécifie le texte du header
          protected $footerTitle = '';
     
          public function Header(){ 
        $this->write(5, $this->headerTitle);
          } 
          public function Footer(){               
        $this->write(5, $this->footerTitle);
          } 
    }

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    mon probleme est que j'ai differents header et footer
    j'ai implémenter des fonction header() et footer() dans absencePDF

    code:
    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
    <?php
     
    class AbsencePDF extends sfTCPDF
    {
     
    	public function Header($title,$c) {
     
    		$this->SetTopMargin(2);
    		$this->SetLeftMargin(0);
    		$this->SetFillColor(204, 0, 1);
    		if($title=="Sommaire")
    		{
    			$this->MultiCell(30, 15, '', 0, 'L', 1, 0,0,2,'', '', true);
    		}
    		else
    		{
    			$this->MultiCell(30, 15, '', 0, 'L', 1, 0,'', '', true);
    		}
    		$this->SetFillColor(1, 64, 115);
    		$this->MultiCell(150, 15, '<div style="color:#FFFFFF;font-size:45px;text-align:left;">'.utf8_encode($title).'</div>', 0, 'L', 1, 0,'', '', true,true,true,true);
    		$this->SetFillColor(204, 0, 1);
    		$this->MultiCell(150, 15, '<div style="color:#FFFFFF;font-size:45px;text-align:left;">'.utf8_encode($c).'</div>', 0, 'L', 1, 0,'', '', true,true,true,true);
    		// Line break
    		$this->Ln(20);
    	}
     
    	// Page footer
    	public function Footer($title) {
    		// Position at 1.5 cm from bottom
    		$this->SetY(-10);
    		if($title=="Sommaire")
    		{
    			$this->MultiCell(30, 7, '', 0, 'L', 1, 0,0,2,'', '', true);
    		}
    		else
    		{
    			$this->MultiCell(30, 7, '', 0, 'L', 1, 0,'', '', true);
    		}
    		$this->SetFillColor(1, 64, 115);
    		$this->MultiCell(150, 7, '<div style="color:#FFFFFF;font-size:20px;text-align:left;">'.utf8_encode($title).'</div>', 0, 'L', 1, 0,'', '', true,true,true,true);
    		$this->SetFillColor(204, 0, 1);
    		$this->MultiCell(20, 7, '<div style="color:#000000;font-size:20px;text-align:left;">confidentiel</div>', 0, 'L', 1, 0,'', '', true,true,true,true);
    		$this->MultiCell(20, 7, '<div style="color:#FFFFFF;font-size:20px;text-align:left;">'.$this->getAliasNumPage().'/'.$this->getAliasNbPages().'</div>', 0, 'L', 1, 0,'', '', true,true,true,true);
     
    	}
    }
    ?>
    vue que j'utilise $pdf->SetAutoPageBreak(); quand la quantité d'information et grande dans une page la page suivante est générer automatiquement
    mais sans les header et footer que je souhaite
    donc comment je peux passer à chaque fois differents parametres pour le addpage

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Par défaut
    Ah oui je me suis un peu égaré.

    Je pense qu'AddPage (appellée grâce au autopagebreak) n'appelle pas header et footer parce que celles que tu as redéfinis attendent des paramètres, et donc ne sont pas des réimplémentations des méthodes mais des nouvelles méthodes n'ayant aucun lien avec AddPage.

    Si c'est bien ça, tu pourrais par exemple utiliser des membres de la classe AbsencePDF pour stocker le titre du header et du footer en cours (comme indiqué dans le code précédent) :

    class AbsencePDF extends TCPDF{
    protected $headerTitle = ''; // Pour pouvoir générer un header dynamiquement, à n'importe quel moment on spécifie le texte du header
    protected $footerTitle = '';

    public function Header(){
    $this->write(5, $this->headerTitle);
    }
    public function Footer(){
    $this
    ->write(5, $this->footerTitle);
    }
    }
    Il ne te reste plus qu'à affecter le bon titre lorsque, dans executeGeneratepdf, tu passe à la ligne manuellement.


    Donc je remplacerais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pdf->AddPage();
    $pdf->Header("Sommaire","GRT3if03");
    $pdf->Footer("Evaluation contrat du 01/11/2008 au 31/10/2009");
    par quelque chose qui ressemblerait à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $pdf->headerTitle = "Sommaire";
    $pdf->footerTitle = "Evaluation contrat du 01/11/2008 au 31/10/2009";
     
    $pdf->AddPage();
    Donc la chose importante c'est de bien être sur que Header et Footer sont utilisables (même prototype de fonction que celles de TCPDF) et utilisées par les fonctions internes de TCPDF.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/05/2014, 10h08
  2. Framework pour créer des PDF
    Par ioexception dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/10/2011, 17h53
  3. [EDI][PHP-HTML2FPDF-WYSIWYG] Cherche un éditeur html pour créer des pdf
    Par exorus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 11/07/2006, 12h37
  4. Pour créer des pdf : meilleur logiciel ?
    Par calogerogigante dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 22/04/2006, 17h54
  5. Liens pour apprendre à créer des PDF
    Par pmboutteau dans le forum Autres langages
    Réponses: 6
    Dernier message: 20/09/2005, 18h16

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