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 09/03/2007, 12h17   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 89
Points : 10
Points : 10
Par défaut [FPDF] Exportation de donnees sous PDF mais la il y a un BUG

Bonjour,

J'ai repris les memes pages php que dans mes discussions précedentes pour les adapter pour faire un annuaire téléphonique ...

Lors de l'export en PDF, il me mets les 3 dernieres colonnes les unes sous les autres au lieu de les mettrent à la suite ???? là je ne comprends pas ....

Voici le code:

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
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
 
 
<?php require_once('../Connexions/Connexionannuaire.php');
mysql_select_db($database_Connexionannuaire, $Connexionannuaire);
 
$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'Poste';
$export = isset($_GET['export']) ? $_GET['export'] : '';
 
$query_rsDossiers = "SELECT annuaire.Poste, annuaire.Nom, annuaire.Prenom, annuaire.Fixe, annuaire.Portable, annuaire.Societe, annuaire.Adresse, annuaire.Ville, annuaire.Codepostal FROM annuaire ORDER BY $orderby";
$rsDossiers = mysql_query($query_rsDossiers, $Connexionannuaire) or die(mysql_error());
$totalRows_rsDossiers = mysql_num_rows($rsDossiers);
 
if ($export === 'excel') {
	header("Content-Type: text/x-csv");
	header('Content-Disposition: attachement; filename="Exportexcel.csv"');
  $list = "\"Poste\"; \"Noms\";\"Prenoms\";\"Numeros Fixe\";\"Numeros Portable\";\"Societes\";\"Adresse\";\"Ville\";\"Codepostal\";\r\n";
  while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $list .= $row_rsDossiers['Poste'] .";". $row_rsDossiers['Nom'] .";". $row_rsDossiers['Prenom'] .";"
	      . $row_rsDossiers['Fixe'] .";". $row_rsDossiers['Portable'] .";". $row_rsDossiers['Societe'] .";"
		  . $row_rsDossiers['Adresse'] .";". $row_rsDossiers['Ville'] .";". $row_rsDossiers['Codepostal'] ."\r\n";
  }
  echo $list;
 
} elseif ( $export === 'pdf' ) {
ob_start(); // Enclenche la tamporisation de sortie
  require('fpdf.php');
 
$x = '10';
$y = '10';
 
$pdf=new fpdf();//on instancie un objet Portait en milimètre et au format A4
/**
* Comme je met les mesure en mm cele me permet de placer tous les éléments aux mm prés
* Cela fonctione sur le principe de l'abscice et l'ordonnée
* le X représente la largeur
* le Y représente la hauteur
*/ 
$pdf->AliasNbPages(nb);
$pdf->AddPage('P','mm','A4');//on crée la page 
$pdf->Image('../images/logo CMF-2.jpg',10,10,30,10);
$pdf->Image('../images/logo CMF-2.jpg',40,10,30,10);
$pdf->Image('../images/logo CMF-2.jpg',70,10,30,10);
$pdf->Image('../images/logo CMF-2.jpg',100,10,30,10);
$pdf->Image('../images/logo CMF-2.jpg',110,10,30,10);
$pdf->Image('../images/logo CMF-2.jpg',140,10,30,10);
$pdf->Image('../images/logo CMF-2.jpg',170,10,30,10);
/**
* les mesure sont aux hasard à toi de modifier le 10/10 représente la position sur la page,30/10 la taille de l'image
*/ 
$pdf->SetXY($x, $y);
$pdf->SetFont('Times','BIU',20);// défint l'écriture pour le titre 
$pdf->Cell(190,10,'Exportation de la liste des contacts en PDF',1,1,'C');
 
//$nb_col = 9;
//$largeur_total_page = 210;
//$largeure_colonne = ($largeur_total_page -20) / $nb_col;
 
$pdf->SetXY($x, $y+10);//on place le pointeur
$pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
 
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
 
$pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
$pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
$pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
}
 
ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
$pdf->Output();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><!-- InstanceBegin template="/Templates/Listeannuaire.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Liste par nom d'affaire</title>
<!-- InstanceEndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
</head>
 
<body>
<div align="center"></div>
<table width="1150" height="452">
  <tr>
    <td width="1150" valign="top"><div align="center">
      <!-- InstanceBeginEditable name="tableau" -->
      <div align="center">
        <p>&nbsp;</p>
        <p><a href="liste.php?orderby=<?php echo $orderby; ?>&export=excel">Export au format Excel</a></p>
        <p><a href="liste.php?orderby=<?php echo $orderby; ?>&export=pdf"">Export au format PDF</a></p>
        <p>&nbsp;</p>
      </div>
      <table width="1150" border="1">
        <tr>
          <td width="80"><div align="center"><font color="#6633CC"><strong>Postes</strong></font></div></td>
          <td width="180"><div align="center"><font color="#6633CC"><strong>Noms</strong></font></div></td>
          <td width="0"><div align="center"><font color="#6633CC"><strong>Prenoms</strong></font></div></td>
          <td width="140"><div align="center"><font color="#6633CC"><strong>Numero Fixe</strong></font></div></td>
          <td width="140"><div align="center"><font color="#6633CC"><strong>Numeros Portable </strong></font></div></td>
          <td width="140"><div align="center"><font color="#6633CC"><strong>Societe</strong></font></div></td>
          <td width="140"><div align="center"><strong><font color="#6633CC">Adresse</font></strong></div></td>
          <td width="140"><div align="center"><font color="#6633CC"><strong>Ville</strong></font></div></td>
          <td width="140"><div align="center"><font color="#6633CC"><strong>Code Postal </strong></font></div></td>
        </tr>
        <?php while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) { ?>
        <tr>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Poste']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Nom']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Prenom']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Fixe']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Portable']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Societe']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Adresse']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Ville']; ?></div></td>
          <td width="0"><div align="center"><?php echo $row_rsDossiers['Codepostal']; ?></div></td>
        </tr>
        <?php } ?>
      </table>
      <!-- InstanceEndEditable -->
      <p>&nbsp;</p>
      <p>&nbsp;</p>
    </div></td>
  </tr>
</table>
<p align="center"><strong><font size="7" face="Arial, Helvetica, sans-serif"></font></strong></p>
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($rsDossiers);
?>
Si quelqu'un a une explication sur ce phenomene je veux bien ..
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 12h30   #2
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Salut, oui il y a une réponses à ce phénomène étrange...

Comme je te l'ai spécifié dans un autre post, la méthode Cell place une cellule à l'endroit ou se trouve le curseur (invisible) dans le document pdf.

exemple:
Code :
1
2
3
4
5
6
7
 
<?
...
 
for ($i = 0 ; $i<10 ; $i++)
  $pdf->Cell(25, 5, $i, 1, 0, 'C', 0);
?>
Le code précédent va écrire dans le document pdf 10 cellules les unes en dessous des autres

Le manuel de fpdf.org te donne
Citation:
Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]])
ln

Indique où se déplace la position courante après l'appel à la méthode. Les valeurs possibles sont :

* 0 : à droite
* 1 : au début de la ligne suivante
* 2 : en dessous

Mettre 1 est équivalent à mettre 0 et appeler la méthode Ln() juste après. La valeur par défaut est 0.
Si tu veux les mettre les unes à côté des autres, deux solutions :
1) tu spécifie la variable "ln" dans l'appel de la méthode Cell à la valeur 0
2) tu ajoutes au code un placement du curseur à l'aide de la péthode setXY(x,y);

Code :
1
2
3
4
5
6
7
8
9
10
 
<?
...
 
for ($i = 0 ; $i<10 ; $i++)
 {
    $pdf->SetXY(10*$i, 0);
    $pdf->Cell(25, 5, $i, 1, 0, 'C', 0);
 }
?>
Dans ton cas, tu veux dessiner plusieurs colonnes mais tu les construits colonnes par colonnes et pas ligne par ligne... Tu dois donc écrire une colonne en spécifiant "ln"=2 pour avoir les cell de ta colonne les unes sous les autres.
Ensuite, pour changer de colonne, il faut replacer le curseur avec SetXY

solution:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
$pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
$x=0;
$y=0;
 
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->SetXY($x, $y);//on place le pointeur
$pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
$pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
$pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
 
$x += 30; // ca décale ta colonne suivante..
}
 
ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
$pdf->Output();
Espérant t'avoir aidé...

++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 13h49   #3
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 89
Points : 10
Points : 10
Ouais ça à l'air pas mal comme ça mais le soucis c'est que mes 66 lignes ne sont plus que sur une seule et toute decalée de 30 je pense ...

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
 
$pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
$x=10;
$y=20;
 
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->SetXY($x, $y);//on place le pointeur
$pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
$pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
$pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
 
$x += 30; // ca décale ta colonne suivante..
}
 
ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
$pdf->Output();
}
?>
J'ai modifié la position x et y pour la mettre juste sous le titre de ma page ...
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 17h54   #4
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Oui, j'ai oublié un détail, tu fais ligne par ligne (et non col par col comme je pensait au début...)

Donc, premier passage dans ta boucle, normal puis il faut changer $y et non $x comme je te l'avais dit...

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
$pdf->SetFont('Times', '', 7);// définit l'écriture pour tous ce qui suit 
$x=10;
$y=20;
 
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
$pdf->SetXY($x, $y);//on place le pointeur
$pdf->Cell(25, 5, $row_rsDossiers['Poste'], 1, 0, 'C', 0);
$pdf->Cell(30, 5, $row_rsDossiers['Nom'], 1, 0, 'C', 0);
$pdf->Cell(25, 5, $row_rsDossiers['Prenom'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Fixe'], 1, 0, 'C', 0);
$pdf->Cell(17, 5, $row_rsDossiers['Portable'], 1, 0, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Societe'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Adresse'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Ville'], 1, 1, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Codepostal'], 1, 1, 'C', 0);
 
$y += 5; // ca décale ta ligne suivante..
}
 
ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
$pdf->Output();
}
?>
Là, ça devrait marcher

++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web