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 :

[FPDF] Footer qui ne s'affiche qu'en dernière page


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut [FPDF] Footer qui ne s'affiche qu'en dernière page
    Bonjour à vous,

    la fonction Footer(); est un peu galère à utiliser ...
    J'ai cherché et trouvé quelques solutions, mais je rencontre un problème.

    Je souhaite donc utiliser un footer personnalisé ( du texte avec une ligne au dessus ) sur toutes les pages.
    Mais j'obtiens un footer composé de seulement cette ligne sur toutes les pages.
    Et pour la dernière page, le texte avec la ligne comme je veux ...
    J'comprends pas là ...

    j'ai donc un fichier layout_pdf.php dans lequel il y a :
    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
    <?php
    require('fpdf.php');
    class pdf extends FPDF {
     
    [...] autres fonctions [...]
    	public $myfoot = "";
    	function Footer() { // Pied de page
     
    		$this->SetDrawColor(15,33,139); // couleur du trait
    		$this->SetTextColor(15,33,139); // couleur du texte
    		$this->SetFont('','',8);
     
    		$this->SetXY(15,-20);
    		$this->MultiCell(183,4,$this->myfoot,'T','C');
     
    		$this->SetFont('','',10); // remet la fonte de base
    	}
     
     
     
    }
    ?>
    et un fichier impression_pdf.php avec:
    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
    <?php
    require('layout_pdf.php');
    // génération du pdf
    $pdf = new pdf();
    $pdf->AddPage();
    $pdf->SetTitle("Titre");
    $pdf->SetAuthor("Auteur");
    $pdf->SetCreator("Auteur");
    $pdf->SetSubject("Sujet");
    $pdf->SetFont('Arial','',10);
    // footer
    $myfoot  = "test";
    $pdf->myfoot = $myfoot;
     
    // sortie du pdf
    $pdf->Output('mon_pdf','I');
    ?>
    Voyez-vous d'où vient le problème ?
    Existe-t-il un tutoriel/ressource détaillé sur l'utilisation du footer ?
    Je galère encore un peu avec la POO, j'ai pas fait la mise à jour de mon cerveau

    ps: il y a très peu de message sur FPDF depuis quelques temps, les infos se trouvent-elles sur un autre site ou une autre bibliothèque est à préférer ?

    Cordialement,
    _____
    Rahan

  2. #2
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    ici http://www.fpdf.org/ tu trouveras des tutos simples mais explicites.

    Dans ton cas :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	function Footer() { // Pied de page
                    global $myfoot;
    		$this->SetDrawColor(15,33,139); // couleur du trait
    		$this->SetTextColor(15,33,139); // couleur du texte
    		$this->SetFont('','',8);
     
    		$this->SetXY(15,-20);
    		$this->MultiCell(183,4,$this->myfoot,'T','C');
     
    		$this->SetFont('','',10); // remet la fonte de base
    	}

    et :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // footer
    $myfoot  = "test";
    // $pdf->myfoot = $myfoot; ligne pas nécessaire

    C'est du moins ce qui fonctionne chez moi.
    Juste une question : pourquoi créer layout_pdf.php? Est-ce que tu l'utilises dans d'autres scripts. Sinon, ce n'est pas la peine d'extérioriser ce bout de code.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Bonjour,

    merci pour cette réponse rapide par jour férié
    Malheureusement j'ai ce message d'erreur:
    Notice: Undefined property: pdf::$myfoot in C:\xampp\htdocs\...\PDF\layout_pdf.php on line 371
    Concernant l'extériorisation du layout, je m'attendais à cette curiosité.
    Cette pratique est volontaire.
    Je souhaite séparer la récupération/préparation des données de sa mise en forme.
    Le fichier impression_pdf.php récupère donc des variables venant d'une session et de différents fichiers ( fichier langue et paramètres configurés dans un back office, exemple: titre du PDF, nom de l'auteur, etc ... ),
    puis construit le PDF selon le layout.
    La séparation du layout me permettra par la suite de proposer différentes mises en page.

    Je connais http://www.fpdf.org/.
    Le point que tu proposes est bien le n°5 de la FAQ, je l'avais testé mais en vain.
    D'où l'erreur sus-précisée et ma recherche d'aide.
    J'ai aussi cherché parmi les scripts, mais ils ne font pas appel à un footer avec variables incorporées.

    Je crois que je vais repartir de zéro pour voir s'il n'y a pas une confrontation quelque part ... sauf si tu vois que l'erreur vient d'ailleurs.

    Cordialement,
    _____
    Rahan

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Bon, j'ai tout repris de zéro avec un seul fichier, sans variable:
    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
    <?php
    require('fpdf.php');
     
    class monPDF extends FPDF
    {
    	function Texte() { // Texte
    		$h_ligne = 5;
    		for($i=1; $i<70; $i++){
    			$this->SetXY(15,$i*$h_ligne);
    			$this->SetFont('Arial','B',14);
    			$this->Cell(183,5,"test ".$i,0,1,'C');
    			$this->SetFont('Arial','',10);
    		}
    	}
     
    	function Footer() {
    		// global $myfoot;
    		// Positionnement à 1,5 cm du bas
    		$this->SetY(-15);
    		// Police Arial italique 8
    		$this->SetFont('Arial','I',8);
    		// Numéro de page centré
    		$this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
    		// $this->Cell(0,10,$this->myfoot,0,0,'C');
    	}
     
    }
     
    $monPDF = new monPDF();
    $monPDF->AddPage();
    $monPDF->SetFont('Arial','',10);
    $monPDF->Texte();
     
    $myfoot = 'test';
     
     
     
    // sortie du pdf
    $monPDF->Output('test','I');
    ?>
    cela m'affiche bien le numéro de la page en footer.
    ( par contre je ne comprends pourquoi les 54 premières lignes "test+numéro" s'affiche ensemble sur la première page, puis à partir de la 55, chaque ligne est écrite sur une page. J'ai donc un document de 16 pages ... m'enfin, à chaque pb son tour ).

    J'active maintenant ma variable global $myfoot:
    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
    <?php
    require('fpdf.php');
     
    class monPDF extends FPDF
    {
    	function Texte() { // Texte
    		$h_ligne = 5;
    		for($i=1; $i<70; $i++){
    			$this->SetXY(15,$i*$h_ligne);
    			$this->SetFont('Arial','B',14);
    			$this->Cell(183,5,"test ".$i,0,1,'C');
    			$this->SetFont('Arial','',10);
    		}
    	}
     
    	function Footer() {
    		global $myfoot;
    		// Positionnement à 1,5 cm du bas
    		$this->SetY(-15);
    		// Police Arial italique 8
    		$this->SetFont('Arial','I',8);
    		// Numéro de page centré
    		// $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
    		$this->Cell(0,10,$this->myfoot,0,0,'C');
    	}
     
    }
     
    $monPDF = new monPDF();
    $monPDF->AddPage();
    $monPDF->SetFont('Arial','',10);
    $monPDF->Texte();
     
    $myfoot = 'test';
     
     
     
    // sortie du pdf
    $monPDF->Output('test','I');
    ?>
    et là j'ai le message d'erreur
    Notice: Undefined property: monPDF::$myfoot in C:\xampp\htdocs\test_pdf\test.php on line 24
    répété 16 fois.

    J'crois qu'il y a un truc que je n'ai vraiment pas compris là.
    Si on peut m'éclaircir, ça serait super smpa.

    Cordialement,
    _____
    Rahan

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    en utilisant le tutoriel pour le header/footer et en intégrant la variable globale, j'ai toujours l'erreur.
    Quelqu'un peut-il tester le code ci-dessous et me dire d'où vient le problème ?

    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
    <?php
    require('fpdf.php');
     
    class PDF extends FPDF
    {
    // En-tête
    function Header()
    {
        // Logo
        //$this->Image('logo.png',10,6,30);
        // Police Arial gras 15
        $this->SetFont('Arial','B',15);
        // Décalage à droite
        $this->Cell(80);
        // Titre
        $this->Cell(30,10,'Titre',1,0,'C');
        // Saut de ligne
        $this->Ln(20);
    }
     
    // Pied de page
    function Footer()
    {
        global $myfoot;
        // Positionnement à 1,5 cm du bas
        $this->SetY(-15);
        // Police Arial italique 8
        $this->SetFont('Arial','I',8);
        // Numéro de page
        //$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
        $this->Cell(0,10,$this->myfoot,0,0,'C');
    }
    }
     
    // Instanciation de la classe dérivée
    $pdf = new PDF();
    $pdf->AliasNbPages();
    $pdf->AddPage();
    $pdf->SetFont('Times','',12);
    for($i=1;$i<=40;$i++)
        $pdf->Cell(0,10,'Impression de la ligne numéro '.$i,0,1);
    $myfoot = 'test';
    $pdf->Output();
    ?>
    Merci beaucoup.

    Cordialement,
    _____
    Rahan

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    YATAAAA !!!

    je ne sais pas pourquoi mais en faisant comme ci-dessous ça fonction nickel.
    Pour cela il faut:
    1. déclarer sa variable en public à l'extérieur de la fonction Footer();
    2. définir sa variable avant l'appel d'une fonction de notre class perso


    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
    <?php
    require('fpdf.php');
     
    class PDF extends FPDF
    {
    // En-tête
    function Header()
    {
        // Logo
        //$this->Image('logo.png',10,6,30);
        // Police Arial gras 15
        $this->SetFont('Arial','B',15);
        // Décalage à droite
        $this->Cell(80);
        // Titre
        $this->Cell(30,10,'Titre',1,0,'C');
        // Saut de ligne
        $this->Ln(20);
    }
     
    // Pied de page
    	public $myfoot;
    	function Footer() {
    		// Positionnement à 1,5 cm du bas
    		$this->SetY(-15);
    		// Police Arial italique 8
    		$this->SetFont('Arial','I',8);
    		// Numéro de page
    		//$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    		$this->Cell(0,10,$this->myfoot,0,0,'C');
    	}
    }
     
    // Instanciation de la classe dérivée
    $pdf = new PDF();
    $pdf->AliasNbPages();
    $pdf->AddPage();
    $pdf->SetFont('Times','',12);
    $myfoot = "test";
    $myfoot .= " retest";
    $pdf->myfoot = $myfoot;
    for($i=1;$i<=40;$i++) {
    	$pdf->Cell(0,10,'Impression de la ligne numéro '.$i,0,1);
    }
    $pdf->Output();
    ?>
    je passe le sujet en RESOLU, mais souhaite quand-même quelques remarques sr le pourquoi du comment de tout ça ...

    Bien cordialement,
    _____
    Rahan

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

Discussions similaires

  1. footer qui ne reste pas en bas de page
    Par alex2746 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 29/04/2012, 11h26
  2. [XSL-FO] Afficher sur la dernière page seulement !!
    Par Rumeurs dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 31/01/2006, 21h05
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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