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 18/05/2007, 14h03   #1
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut [FPDF] Comment faire une zone de text délimité

Bonjour,

J'essaye de faire un rectangle sur le coté gauche d'une page qui contiens 4 lignes entouré par une ligne comme un tableau, seulement le seule truc que j'obtiens c'est un rectangle par ligne qui traverse tout le documents.

Code :
$pdf->Cell(0,10,'ma première ligne',1,);
comment faire sa ?

Merci d'avance.
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 14h16   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
FPDF est tres bien fait, avec une doc assez explicative sur l'utilisation des fonctions. En l'occurrence le premier paramètre de Cell c'est "width" soit la largeur de la cellule et si tu mets 0 ca s'étend jusqu'à la bordure de droite.
http://fpdf.org/fr/doc/cell.htm

Donc commences par regarder leur manuel pour voir comment marchent les fonctions.

Ensuite, tu veux faire "une sorte de tableau" avec des cell, pourquoi ne fais-tu pas simplement un tableau avec les méthodes et les exemples de script qui font des tableaux??
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 14h29   #3
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
parce que je n'y arrive pas tout simplement...
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 14h51   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Essaie ca :

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
 
<?php
require_once (dirname(__FILE__) . "/../Classes/PDF.class.php");
 
// Cree le pdf
$pdf = new FPDF();
 
// Ajout une page
$pdf->addPage();
 
// definit la largeur des cellules
$width = 40;
//definit la hauteur des cellules
$height = 5;
 
// Define l'abscisse pour ton tableau
$pdf->setX(10);
 
// Récupère l'ordonnée actuelle
$y = $pdf->getY();
 
// cree la cellule avec bordure (d'ou le 1 a la fin)
$pdf->Cell($width,$height, "Cellule 1",1);
// définit l'ordonnée comme étant l'rdonnée avant la cellule + hauteur cellule
$pdf->setY($y + $height);
// Récupère l'ordonnée actuelle
$y = $pdf->getY();
//etc.
$pdf->Cell($width,$height, "Cellule 2",1);
$pdf->setY($y + $height);
$y = $pdf->getY();
$pdf->Cell($width,$height, "Cellule 3",1);
$pdf->setY($y + $height);	
$pdf->Output();
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 14h54   #5
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
je viens de coller dans un nouveau document vide ton code et sa fais comme dans mon code, sa donne une page blanche avec comme message d'erreur "Font has been set."
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 14h57   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
1/ as tu enlevé mon require qui est dépendant de ma classe pdf et pas juste de FPDF?
2/ ton probleme c'est que tu n'as aucun pdf en sortie ou que tu n'arrives pas a faire un "tableau"? Parce que ca n'est pas du tout la même chose.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 15h03   #7
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
oui j'ai placé ma classe fpdf et pas la tienne..
je n'arrive pas à faire de tableau, mais quand j'utilise l'exemple des tableau du site fpdf, j'ai une page blanche et rien d'autre.
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 15h06   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Pourrai-je voir ton script s'il te plait? Pour essayer de comprendre ou voir ce qu'on pourrait modifier pour vérifier que ca génère un pdf!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 15h25   #9
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
voila,

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
<?php
require('fpdf/fpdf.php');
 
class PDF extends FPDF
{
//Tableau amélioré
function ImprovedTable($data)
{
    //Largeurs des colonnes
    $w=array(40);
 
    //Données
    foreach($data as $row)
    {
        $this->Cell($w[0],6,$row[0],'LR');
        $this->Ln();
    }
    //Trait de terminaison
    $this->Cell(array_sum($w),0,'','T');
}
}
 
$pdf=new FPDF('P','mm','A4');
$pdf->AddPage();
$pdf->Image('img/image1-g.jpg',10,10);
$pdf->Image('img/image2-d.jpg',148,10);
$pdf->Image('img/ligne.png',10,40,190,1);
$pdf->SetFont('Times','B',16);
 
$data= "test1,test2,test3,test4";
$pdf->ImprovedTable($data);
 
$pdf->Output();
?>
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 15h54   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
J'ai du mal a comprendre ton code et ce qu'il fait.
J'ai plusieurs questions en fait

1/ pourquoi $w est-il un tableau de 40 éléments au lieu d'être juste égal a 40?
2/tu fais un foreach sur $data mais quand tu appelles la fonction improvedTables tu lui donnes une string et pas un tableau, pourquoi?
3/ Dans improvedTables tu fais appel à $row[0], mais c'est pas un tableau $row vu que c'est chaque élément de ton foreach faut utiliser directement $row
4/ Idem que le 1 pourquoi faire un array_sum sur un tableau a un élément pour déterminer la largeur des colonnes???

Ensuite peux-tu ajouter dans ton script (avant le output) ce code :
Code :
1
2
3
$pdf->setX(20);
$pdf->setY(50);
$pdf->Cell(50,10,"TEST",1);
pour voir s'il te l'affiche.

Enfin derniere question : quand tu lances un des exemples du site (directement depuis le site) est ce que ca fonctionne? Pour m'assurer que tu as bien le plugin acrobat pour lire les pdf dans le navigateur
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 16h38   #11
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
pour le tableau j'ai juste fais un copier coller vu que je pige rien a leur truc....

ton bout de code fonctionne bien...
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 17h50   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Aaaaaah, regardes tu définis la classe PDF qui hérite de FPDF (pour faire ta propre classe) mais tu utilises FPDF dans le script et pas PDF, du coup il connait meme pas ta fonction improvedTable().
Essaies ca :

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
 
<?php
require('fpdf/fpdf.php');
 
class PDF extends FPDF
{
	//Tableau amélioré
	function improvedTable($data)
	{
	    //Largeurs des colonnes
	    $w=40;
 
	    //Données
	    foreach($data as $row)
	    {
	    	// crée une cellule avec les bordures partout (le 1 sert a ca)
	        $this->Cell($w,6,$row,1);
	        // Va a la ligne
	        $this->Ln();
	    }
	}
 
}
 
// Cree une instance de TA classe!
$pdf = new PDF('P','mm','A4');
$pdf->AddPage();
$pdf->SetFont('Times','B',16);
 
// les données a mettre dans la table
$vData = array("test1","test2","test3","test4");
$pdf->improvedTable($vData);
 
$pdf->Output();
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 17h56   #13
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
a la sa marche nikel, mais pour enlever les lignes dans le tableau on fait sa comment, je parel des ligne entre test1, test2, test3 et test4 ?

ps : a que c'est cool quand on s'y connais...
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 18h09   #14
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Une nouvelle fois, regarde la documentation de la méthode Cell avant de demander... mais bon je pars dans 5minutes alors voila :
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
 
<?php
require('fpdf/fpdf.php');
 
class PDF extends FPDF
{
	//Tableau amélioré
	function improvedTable($data)
	{
	    //Largeurs des colonnes
	    $w=40;
 
	    //Données
	    $vNumeroCellule = 1; // pour savoir si tu es sur le début du tableau
		$vNbCellule = count($data); // recupere le nombre de cellules
	    foreach($data as $row)
	    {
	    	// si tu es sur la premiere cellule tu as besoin de la bordure
	    	// droite, gauche et en haut
	    	if( $vNumeroCellule == 1 )
	    		{
	    		// L pour Left, T pour Top et R pour Right
	        	$this->Cell($w,6,$row,'LTR');	
	        	$vPremiereCellule = false; //pour les prochaines juste droite gauche  
	    		}  			
	    	elseif( $vNumeroCellule == $vNbCellule) // si tu es sur la derniere
	    		{
	    	    // L pour Left, B pour Bottom et R pour Right
	        	$this->Cell($w,6,$row,'LBR');	
	    		}
	    	else
	    		{ 
	    		$this->Cell($w,6,$row,'LR');	
	    		}
	        // Va a la ligne
	        $this->Ln();
	        $vNumeroCellule++; // prochaine cellule
	    }
	    // On a atteint la derniere cellule, on a besoin de rajouter la barre du bas
 
	}
 
}
 
// Cree une instance de TA classe!
$pdf = new PDF('P','mm','A4');
$pdf->AddPage();
$pdf->SetFont('Times','B',16);
 
// les données a mettre dans la table
$vData = array("test1","test2","test3","test4");
$pdf->improvedTable($vData);
 
$pdf->Output();
?>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 18h17   #15
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
merci je regarde sa se soir...
  Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 20h24   #16
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, si je puis me permettre, si tu veux faire un rectangle contenant plusieurs lignes de texte, utilise la méthode MultiCell... C'est le meme style que Cell mais tu peux y mettre plusieurs lignes (utilise \n pour aller à la ligne dans ton texte...

++
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 20/05/2007, 10h30   #17
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Super génial, c'est bien sa que je voulais
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Enlever Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web