Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF > FPDF
FPDF Forum d'entraide pour la bibliothèque FPDF permettant de générer des documents PDF en PHP. Avant de poster -> tutoriels FPDF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/11/2011, 15h05   #1
Invité de passage
 
Inscription : juin 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 13
Points : 2
Points : 2
Par défaut 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 :
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 :
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
RahanDuPonan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 15h36   #2
Membre expérimenté
 
Inscription : janvier 2007
Messages : 620
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 620
Points : 553
Points : 553
Bonjour,
ici http://www.fpdf.org/ tu trouveras des tutos simples mais explicites.

Dans ton cas :

Code php :
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 :
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.
kabkab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 16h06   #3
Invité de passage
 
Inscription : juin 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 13
Points : 2
Points : 2
Bonjour,

merci pour cette réponse rapide par jour férié
Malheureusement j'ai ce message d'erreur:
Citation:
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
RahanDuPonan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 16h38   #4
Invité de passage
 
Inscription : juin 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 13
Points : 2
Points : 2
Bon, j'ai tout repris de zéro avec un seul fichier, sans variable:
Code :
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 :
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
Citation:
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
RahanDuPonan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 16h56   #5
Invité de passage
 
Inscription : juin 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 13
Points : 2
Points : 2
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 :
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
RahanDuPonan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 17h15   #6
Invité de passage
 
Inscription : juin 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 13
Points : 2
Points : 2
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 :
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
RahanDuPonan est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web