IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[FPDF] Comment faire une zone de text délimité


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    HwRZxLc4
    Invité(e)
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Cell(0,10,'ma première ligne',1,);
    comment faire sa ?

    Merci d'avance.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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??

  3. #3
    HwRZxLc4
    Invité(e)
    Par défaut
    parce que je n'y arrive pas tout simplement...

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Essaie ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    ?>

  5. #5
    HwRZxLc4
    Invité(e)
    Par défaut
    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."

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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.

  7. #7
    HwRZxLc4
    Invité(e)
    Par défaut
    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.

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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!

  9. #9
    HwRZxLc4
    Invité(e)
    Par défaut
    voila,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    ?>

  10. #10
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    HwRZxLc4
    Invité(e)
    Par défaut
    pour le tableau j'ai juste fais un copier coller vu que je pige rien a leur truc....

    ton bout de code fonctionne bien...

  12. #12
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    ?>

  13. #13
    HwRZxLc4
    Invité(e)
    Par défaut
    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...

  14. #14
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Une nouvelle fois, regarde la documentation de la méthode Cell avant de demander... mais bon je pars dans 5minutes alors voila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
    ?>

  15. #15
    HwRZxLc4
    Invité(e)
    Par défaut
    merci je regarde sa se soir...

  16. #16
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    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

  17. #17
    HwRZxLc4
    Invité(e)
    Par défaut
    Super génial, c'est bien sa que je voulais

Discussions similaires

  1. [AJAX] comment faire une zone reactive
    Par didou038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/12/2006, 12h51
  2. comment masquer une zone de texte?
    Par casho dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/09/2006, 15h46
  3. Comment ajouter une zone de texte sur excel?
    Par devlopassion dans le forum Excel
    Réponses: 2
    Dernier message: 03/09/2006, 13h12
  4. Comment bloquer une zone de texte à n car
    Par MonsieurAk dans le forum Windows
    Réponses: 3
    Dernier message: 10/08/2005, 16h05
  5. Réponses: 2
    Dernier message: 07/12/2004, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo