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 05/03/2007, 13h26   #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] Exporter résultat en PDF mais sous forme de tableau

Coucou,

Je suis toujours sur la même affaire ....

Maintenant que j'ai réussi à exporter mes données sous PDF grâce à l'aide d'un membre de ce forum sans qui je serais encore entrain de bosser dessus (et je le remercie encore), j'aimerais pouvoir exporter ses données mais sous forme de tableau plutôt que sous forme de ligne qui se suivent séparées de --- ou autre chose ....
Comment puis-je faire cela ???

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
} else if ($export == 'pdf') {
  require('fpdf.php');
  $pdf=new FPDF();
  $pdf->AliasNbPages();
  $pdf->AddPage('P','mm','A4');
  $pdf->SetFont('Times','BIU',20);
  $pdf->Cell(127,10,'Exportation de la liste des affaires en PDF',1);
  $pdf->SetFont('Times', '', 10);
  $pdf->Write(20, "\r\n");
    while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $pdf->Write(5, 
      $row_rsDossiers['Numaff'] ."---".
      $row_rsDossiers['Client'] ."---".
      $row_rsDossiers['Nomaff'] ."---".
	  $row_rsDossiers['Resprojet'] ."---".
	  $row_rsDossiers['Annee'] ."---".
	  $row_rsDossiers['Numcd'] ."\r\n");
  }
  $pdf->Output();
Voilà le bout de code que j'utilise pour l'export en PDF ...

Merci d'avance de votre aide ...
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 13h29   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Réponse un peu tardive mais : http://www.fpdf.org/

Tu trouveras une classe super sympa pour générer des pdf, avec de nombreux développements supplémentaires, dont une classe qui permet de générer du pdf à partir de code html.
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 13h48   #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
J'ai déjà essayé de rajouter quelques lignes dans ce bout de code mais je n'arrive pas lui faire afficher les resultat sous forme de tableau ... et en plus comme ça ne lui plaît pas il m'insulte .....
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 18h31   #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
Bonsoir, je viens de lire ce POST et me permet de vous indiquer un article récent sur la génération de documents PDF.

Il est possible de générer des tableaux, des images, du texte et un sommaire...

Merci de me faire un retour sur l'utilisation de la classe phpToPDF pour voir les éventuels bugs

++
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 07/03/2007, 08h26   #5
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
Pour l'exportation sous forme de tableau c'est OK

Mais maintenant j'aimerais pouvoir adapter la taille des colonnes à la longueur maxi des caractères que j'ai a y insérer ...

Pourriez-vous m'indiquez ce que je dois mettre et à quel endroit svp ???

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
 
<?php
require_once('../Connexions/ConnexionArchives.php');
mysql_select_db($database_ConnexionArchives, $ConnexionArchives);
 
$orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'numaff';
$export = isset($_GET['export']) ? $_GET['export'] : '';
 
$query_rsDossiers = "SELECT Archives.Numaff, Archives.Client, Archives.Nomaff, Archives.Resprojet, Archives.Annee, Archives.Numcd FROM Archives ORDER BY $orderby";
$rsDossiers = mysql_query($query_rsDossiers, $ConnexionArchives) 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 = "\"N° affaires\"; \"Clients\"; \"Noms d'affaires\"; \"Responsables projets\"; \"Années\"; \"N° CD/DVD\";\r\n";
  while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
    $list .= $row_rsDossiers['Numaff'] .";". $row_rsDossiers['Client'] .";"
	  	  .  $row_rsDossiers['Nomaff'] .";". $row_rsDossiers['Resprojet'] .";"
		  .  $row_rsDossiers['Annee'] .";". $row_rsDossiers['Numcd'] ."\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-2.jpg',10,10,30,10);
$pdf->Image('../images/logo-2.jpg',40,10,30,10);
$pdf->Image('../images/logo-2.jpg',70,10,30,10);
$pdf->Image('../images/logo-2.jpg',100,10,30,10);
$pdf->Image('../images/logo-2.jpg',110,10,30,10);
$pdf->Image('../images/logo-2.jpg',140,10,30,10);
$pdf->Image('../images/logo-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 affaires en PDF',1,1,'C');
 
$nb_col = 6;
$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éfint l'écriture pour tous ce qui suit 
 
while ($row_rsDossiers = mysql_fetch_assoc($rsDossiers)) {
 
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Client'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Nomaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Annee'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numcd'], 1, 1, 'C', 0);
}
$pdf->Cell(10,10,"nb"); // Pour afficher le nombre de pages total à la fin du document (à 10,10 de la dernière cellule)
 
ob_end_clean(); // Détruit les données du tampon de sortie et éteint la tamporisation de sortie
$pdf->Output();
}
?>
D'avance merci
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 08h54   #6
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
J'ai vu que tu utilises la variable $largeurColonne pour tes Cell, ca ne suffit pas ???

Pourrais-tu reformuler la demande avec un exemple de ce que tu voudrais au final et ce qui ne marche pas...

Merci
++
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 07/03/2007, 09h03   #7
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
Et bien j'ai une premiere colonne NUMAFF (c'est le N° d'affaire) qui généralement ne depasse pas 10 caractères, ensuite le nom du client, qui peut allez jusqu'à env.40 caractères, ensuite la désignation de l'affaire qui peut allez encore plus loin, l'année en 4 chiffres ... etc

J'aimerais donc pouvoir définir pour chaque colonne la largeur maxi, j'aimerais que le texte ne dépasse pas ...

Si possible, j'aimerais que les colonnes s'adapte automatiquement à la taille de mon texte ...

Tu vois ce que je veux dire ???
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 09h09   #8
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
As tu essayé la fonction MultiCell qui te permet des retours à la ligne (je pense à la désignation des affaires) automatiques en fonction de la largeur de la cellule et de la longueur de ton texte...

Sinon, si tu veux vraiment tes textes sur une seule ligne, il faut parser tous tes textes, calculer les longueurs max et construire tes cellules en fonction de ces valeurs...

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 07/03/2007, 09h14   #9
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
Pourrais-tu me dire comment faire pour la fonction MultiCell stp ???

Peux-tu me donner un exemple concret par rapport à ce que je voudrais faire ???

Merci beaucoup
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 09h18   #10
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
Tu as toutes les indications sur le fpdf.org des tutoriaux et la doc.

Si vraiment tu galères (ce que je ne pense pas), alors je te filerai un peu de code, mais tu vas voir, c assez simple d'utilisation


Par contre, j'ai fait une classe héritant de celle proposée sur fpdf.org, elle permet entre autre de faire des tableaux en spécifiant les largeurs, hauteurs polices de caractères de chaque cellules, tu peux aussi y jeter un oeil. Le lien est dans mon premier POST

++
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 07/03/2007, 09h26   #11
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
Ok je vais essayer,

Juste comme ça ... voilà ce que j'ai mis:

Code :
1
2
3
4
5
6
7
8
9
 
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numaff'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Client'], 1, 0, 'C', 0);
// $pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Nomaff'], 1, 0, 'C', 0);
$pdf->MultiCell(100,5, $row_rsDossiers['Nomaff'], 1, "C", 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Annee'], 1, 0, 'C', 0);
$pdf->Cell($largeure_colonne, 5, $row_rsDossiers['Numcd'], 1, 1, 'C', 0);
}
Donc c'est pas mal il me fait une cellule mais il me met les autres en dernier ...
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 09h28   #12
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
En fait, c'est beaucoup plus simple que ça ......

Il suffisait juste de faire :

Code :
1
2
3
4
5
6
7
8
 
$pdf->Cell(10, 5, $row_rsDossiers['Numaff'], 1, 0, 'C', 0);
$pdf->Cell(30, 5, $row_rsDossiers['Client'], 1, 0, 'C', 0);
$pdf->Cell(70, 5, $row_rsDossiers['Nomaff'], 1, 0, 'C', 0);
$pdf->Cell(20, 5, $row_rsDossiers['Resprojet'], 1, 0, 'C', 0);
$pdf->Cell(10, 5, $row_rsDossiers['Annee'], 1, 0, 'C', 0);
$pdf->Cell(50, 5, $row_rsDossiers['Numcd'], 1, 1, 'C', 0);
}
Plutôt que de marquer $largeure_colonne ...

J'aurais dû y penser ....

Donc j'en conclu que l'affaire est résolu ....

Mais je vais quand même allez voir ton lien ....

En tout cas merci beaucoup pour ton aide ....
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 12h07   #13
NoT
Membre confirmé
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 261
Points : 261
En lisant la doc. de FPDF t'aurais pu t'en rendre compte plus vite

Pense au tag [RESOLU] ^^
NoT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 12h13   #14
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
C'est clair mais ça ne m'avais pas fais tilt tout de suite ...

Comme je ne suis pas encore en expert dans ce langage, tout ne me saute pas au yeux aussi facilement qu'à un pro ...

Mais bon petit à petit je pige de plus en plus ...

Heureusement d'ailleurs
Luverger est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h49.


 
 
 
 
Partenaires

Hébergement Web