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 25/01/2007, 15h04   #1
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Par défaut [FPDF] Hauteur de cellules de tableau

Bonjour,

J'essaie d'exporter dynamiquement des données à l'aide d'une bibliothèque PDF. J'ai choisi FPDF ne sachant pas toutefois si c'est mieux que eZPDF.

J'ai essayé de suivre le tutoriel suivant, mais je ne trouve pas le contenu de la fonction drawTableau()...

Est-ce un oubli ?
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 20h01   #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, pour définir les hauteurs de cellules d'un tableau, tu peux le faire en spécifiant le champ 'LN_SIZE' dans tes propriétés de tableau.

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
<?php
include('phpToPDF.php');

$pdf = new phpToPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);

// Définition des propriétés du tableau.
$proprietesTableau = array(
	'TB_ALIGN' => 'L',
	'L_MARGIN' => 15,
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => '0.3',
	);

// Définition des propriétés du header du tableau.	
$proprieteHeader = array(
	'T_COLOR' => array(150,10,10),
	'T_SIZE' => 12,
	'T_FONT' => 'Arial',
	'T_ALIGN' => 'C',
	'V_ALIGN' => 'T',
	'T_TYPE' => 'B',
	'LN_SIZE' => 17,
	'BG_COLOR_COL0' => array(170, 240, 230),
	'BG_COLOR' => array(170, 240, 230),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.2,
	'BRD_TYPE' => '1',
	);

// Contenu du header du tableau.	
$contenuHeader = array(
	50, 50, 50,
	"Titre de la première colonne", "année N-1", "année N",
	);

// Définition des propriétés du reste du contenu du tableau.	
$proprieteContenu = array(
	'T_COLOR' => array(0,0,0),
	'T_SIZE' => 10,
	'T_FONT' => 'Arial',
	'T_ALIGN_COL0' => 'L',
	'T_ALIGN' => 'R',
	'V_ALIGN' => 'M',
	'T_TYPE' => '',
	'LN_SIZE' => 6,
	'BG_COLOR_COL0' => array(245, 245, 150),
	'BG_COLOR' => array(255,255,255),
	'BRD_COLOR' => array(0,92,177),
	'BRD_SIZE' => 0.1,
	'BRD_TYPE' => '1',
	'BRD_TYPE_NEW_PAGE' => '',
	);	

// Contenu du tableau.	
$contenuTableau = array(
	"champ 1", 1, 2,
	"champ 2", 3, 4,
	"champ 3", 5, 6,
	"champ 4", 7, 8,
	);	

// D'abord le pdf, puis les propriétés globales du tableau. Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
$pdf->drawTableau($pdf, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);

$pdf->Output();	
?>
++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 09h28   #3
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Salut, merci pour ton intérêt.

Le seul problème, c'est que j'aimerais que la hauteur de la cellule s'adapte au texte qui se positionne automatiquement sur plusieurs lignes si le texte est trop long...

C'est pour ça que j'ai voulu utiliser ce qu'il y a dans le tutoriel, mais la fonction drawTableau() n'est pas dans la bibliothèque FPDF.
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 12h52   #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
j'y jetterai un oeil et tenterai de mettre le tutorial à jour

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 14h53   #5
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Je t'en remercie par avance !
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 19h47   #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
Sinon, si tu veux regarder le code de la fonction drawTableau, il est dans le fichier phpToPDF.php fourni avec le "pack"...

Je suis en train d'y jeter un oeil et je pense qu'il faut adapter la hauteur des cellules sur une ligne entiere, exemple avec un tableau de 3 colonnes, si il n'y a rien dans les deux premieres colonnes et un texte long dans la troisième, il faut mettre les 3 colonnes à la meme hauteur sinon ca ne ressemble plus à un tableau !!!

++
JC


EDIT: je viens de faire un test du tutorial tableau, et si tu mets une valeur de cellule à "blablablablablablablablablablablablablablablablablablablablablablablabla", il met la cellule assez grande pour contenir le texte entier...
Peux tu essayer et me confirmer ton problème ??

EDIT 2: je viens de me rendre compte d'une erreur dans les post précédents
la fonction Ln ne donne pas la hauteur d'une cellule mais lécart entre deux lignes... ce qui n'est pas la meme chose...
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 09h03   #7
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Merci beaucoup pour ton aide. J'ai téléchargé le pack et je te tiens au courant de mes avancées.

Je te remercie aussi pour ton tutoriel qui est très utile !

@bientôt !

EDIT : Ta classe phpToPDF est-elle aussi libre de droit au niveau commercial ?
EDIT 2 : Questions techniques :
- Comment personnaliser l'alignement d'une cellule ? (l'alignement du texte de plusieurs colonnes peut différer)
- Dans la variable $contenuTableau, à quoi correspondent les valeurs 1, 2, 3, etc.

Merci d'avance !
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 18h24   #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
Je prends 95% des recettes liées à l'utilisation de la lib phpToPDF , non je déconne...

Pour les valeurs de contenuTableau, c'est tout simplement le contenu des cellules lignes par lignes...

Sinon, pour l'alignement cellule par cellule, je regarde plus en détail et te repost un truc...

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 09h16   #9
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Citation:
Envoyé par jc_cornic
Je prends 95% des recettes liées à l'utilisation de la lib phpToPDF , non je déconne...


Citation:
Envoyé par jc_cornic
Pour les valeurs de contenuTableau, c'est tout simplement le contenu des cellules lignes par lignes...
Ah ben oui, je n'avais pas fait le rapprochement.

Citation:
Envoyé par jc_cornic
Sinon, pour l'alignement cellule par cellule, je regarde plus en détail et te repost un truc...
OK, merci bien !

EDIT :
En re-voyant le fichier PDF généré grâce à ton tutoriel, on voit que le texte de la 1ere colonne est aligné à gauche et que celui des autres colonnes est aligné à droite... Mais je ne trouve pas où cela est paramétré...
Il y a en effet la propriété T_ALIGN_COL0 dans les tableaux, mais par T_ALIGN_COL1 par exemple...
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 12h59   #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
Salut, pour l'alignement dans les colonnes, j'ai séparé la colonne de gauche (col0) du reste du tableau ainsi que le header (ligne0) du reste... C'est en général comme ç aque sont les tableaux...

Pour aligner la col0, c'est le champ
'T_ALIGN_COL0' => 'L' (dans l'exemple)

Pour aligner les autres colonnes, c'est le champ
'T_ALIGN' => 'R',

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 13h37   #11
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
OK.

Prévoies-tu une personnalisation par colonne ?
Sinon, j'essaierai d'adapter ton script.

EDIT :
J'ai essayé d'ajouter une colonne mais le résultat ne m'affiche plus de tableau :
Code :
1
2
3
4
5
6
7
8
9
$content_header = array(
			20, 20, 20, 10,
			"Titre de la première colonne", "année N-1", "année N", "total");
$content_tableau = array(
			"champ 1", 1, 2,3,
			"champ 2", 4,5,6,
			"champ 3", 7,8,9,
			"champ 4", 10,11,12
			);
Le nombre de colonnes n'est-il pas dynamique ?
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 16h46   #12
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Citation:
Envoyé par navis84
Le nombre de colonnes n'est-il pas dynamique ?
En effet, le nombre de colonnes gérées est 3 ou 5.

En enlevant la partie switch($nbCol) de la fonction drawTableau(), j'ai réussi à automatiser et à formater le tableau selon un nombre de colonnes dynamiques. Aucun formatage n'est encore pris en compte, seul le texte est affiché simplement :

Code :
1
2
3
4
5
6
7
8
9
10
for ($j=0;$j<count($datas);$j+=$nbCol)
		{
			// pour chaque ligne, on parcourt les données de la ligne
			$data = array();
			for ($i=0;$i<$nbCol;$i++)
			{
				$data[$i]['TEXT'] = $datas[$i+$j];
			}
			$pdf->Draw_Data($data);
		}
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 17h50   #13
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
Cool, c'était le but de ce tutorial, donner des bases à des novices pour creer des pdf ou donner des bases à des développeurs (meme débutants) pour adapter le code

Si tu veux bien partager le script quand il sera bétonné, pour l'automatisation des colonnes et des alignements, je t'avoue que je suis preneur

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 08h41   #14
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Cela fait quelques années que je pratique le PHP, mais ce n'est pas toujours évident de comprendre le code de quelqu'un d'autre, ainsi que de le modifier.

Je vais essayer de faire au mieux mon adaptation pour l'alignement du texte des colonnes.
Avec un petit tableau, cela devrait aller.

Je posterai ensuite le fichier phpToPDF.php en expliquant comment appeler la fonction drawTableau() si cela change.

@bientôt et encore merci pour ce tutoriel !
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 10h08   #15
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, je suis en train de modifier la fonction, j'utilise les balises [IUB] (italic, underline, bold) et [LCR] (left, centered et right) pour aligner et modifier le type de chaque cellule...

Si tu as la patiente d'attendre un peu, je m'en charge et comme ça je ferai la mise à jour sur le tutorial...

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 10h29   #16
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Pas de problèmes !

Comptes-tu ajouter la gestion du colspan ? Je ne me suis pas encore penchée sur le sujet...
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 10h43   #17
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, colspan sur 2 ou plusieurs colonnes, ca sert à fusionner les cellules... C'est prévu, ca va déchirer

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 10h51   #18
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Excellent !!!

Bon courage.
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 17h42   #19
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
Un petit post pour te signaler la mise à jour de l'article... Tu peux maintenant individualiser les cellules du tableau ainsi que les fusionner deux à deux...

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 08h57   #20
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Super !

Je m'empresse de tester ça ! Merci beaucoup, c'est du bon boulot !
__________________
N'oubliez pas le tag .
Merci de ne pas envoyer de MP pour des problèmes techniques.
navis84 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 20h18.


 
 
 
 
Partenaires

Hébergement Web