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] Aligner plusieurs MultiCell dans un tableau


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 129
    Par défaut [FPDF] Aligner plusieurs MultiCell dans un tableau
    Salut ^^
    J'ai un problème avec les Multicell.
    Je vous préviens que j'ai bien cherché partout mais sans résultat
    Alors en fait j'ai un tableau fait de Cell (tout marche bien) sans que dans un champ le contenu dépasse la cellule. Donc je mets "MultiCell" au lieu de "Cell", et là la cellule s'adapte bien au contenu, sauf que les Cell normales vont à la ligne !
    Alors ça casse complètement le tableau !
    J'ai essayé de voir comment font les autres dans les scripts présents sur le site de FPDF mais ils n'ont pas fait le tableau comme moi
    Voici le script que j'ai utilisé (FancyTable) :
    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
    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
    <?php
    require('fpdf.php');
     
    class PDF extends FPDF
    {
    //Chargement des données
    function LoadData($file)
    {
        //Lecture des lignes du fichier
        $lines=file($file);
        $data=array();
        foreach($lines as $line)
            $data[]=explode(';',chop($line));
        return $data;
    }
     
    //Tableau simple
    function BasicTable($header,$data)
    {
        //En-tête
        foreach($header as $col)
            $this->Cell(40,7,$col,1);
        $this->Ln();
        //Données
        foreach($data as $row)
        {
            foreach($row as $col)
                $this->Cell(40,6,$col,1);
            $this->Ln();
        }
    }
     
    //Tableau amélioré
    function ImprovedTable($header,$data)
    {
        //Largeurs des colonnes
        $w=array(40,35,45,40);
        //En-tête
        for($i=0;$i<count($header);$i++)
            $this->Cell($w[$i],7,$header[$i],1,0,'C');
        $this->Ln();
        //Données
        foreach($data as $row)
        {
            $this->Cell($w[0],6,$row[0],'LR');
            $this->Cell($w[1],6,$row[1],'LR');
            $this->Cell($w[2],6,number_format($row[2],0,',',' '),'LR',0,'R');
            $this->Cell($w[3],6,number_format($row[3],0,',',' '),'LR',0,'R');
            $this->Ln();
        }
        //Trait de terminaison
        $this->Cell(array_sum($w),0,'','T');
    }
     
    //Tableau coloré
    function FancyTable($header,$data)
    {
        //Couleurs, épaisseur du trait et police grasse
        $this->SetFillColor(255,0,0);
        $this->SetTextColor(255);
        $this->SetDrawColor(128,0,0);
        $this->SetLineWidth(.3);
        $this->SetFont('','B');
        //En-tête
        $w=array(40,35,45,40);
        for($i=0;$i<count($header);$i++)
            $this->Cell($w[$i],7,$header[$i],1,0,'C',1);
        $this->Ln();
        //Restauration des couleurs et de la police
        $this->SetFillColor(224,235,255);
        $this->SetTextColor(0);
        $this->SetFont('');
        //Données
        $fill=0;
        foreach($data as $row)
        {
            $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
            $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
            $this->Cell($w[2],6,number_format($row[2],0,',',' '),'LR',0,'R',$fill);
            $this->Cell($w[3],6,number_format($row[3],0,',',' '),'LR',0,'R',$fill);
            $this->Ln();
            $fill=!$fill;
        }
        $this->Cell(array_sum($w),0,'','T');
    }
    }
     
    $pdf=new PDF();
    //Titres des colonnes
    $header=array('Pays','Capitale','Superficie (km²)','Pop. (milliers)');
    //Chargement des données
    $data=$pdf->LoadData('pays.txt');
    $pdf->SetFont('Arial','',14);
    $pdf->AddPage();
    $pdf->BasicTable($header,$data);
    $pdf->AddPage();
    $pdf->ImprovedTable($header,$data);
    $pdf->AddPage();
    $pdf->FancyTable($header,$data);
    $pdf->Output();
    ?>

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 60
    Par défaut
    La solution à ton problème passe peut-être par l'utilisation de phpToPDF.
    Faire des tableaux c'est sa spécialité
    http://jc-cornic.developpez.com/tuto...s/phpToPDF.zip

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 129
    Par défaut
    Merci bien je vais regarder ça
    Mais au cas où s'il y a une solution avec FPDF je suis preneur

  4. #4
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    Salut,

    Pour aligner plusieurs cellules dans une boucle, il te suffit de stocker dans une variable temporaire les positions X,Y de ton curseur ainsi que les dimensions de la dernière cellule.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // j'affiche pleins de Cell
    ...
     
    // j'affiche une multicell
    $posX = $pdf->getX();
    $posY = $pdf->getY();
     
    $pdf->MultiCell($largeur, $hauteur, "mon texte\navec des sauts de ligne");
     
    // Je veux afficher une Cell juste après ma MultiCell, à droite
    $pdf->SetXY($posX + $largeur, $posY);
    $pdf->Cell(...);

    Espérant t'avoir aidé...

    Sinon, comme te le conseille leMoustachu, phpToPDF contient des méthodes pour générer des tableaux

    ++
    JC

Discussions similaires

  1. [FPDF] MultiCell dans un Tableau
    Par pubpixel dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 19/10/2007, 17h51
  2. [FPDF] Afficher plusieurs tableaux dans un fichier PDF
    Par Pakman80 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 30/07/2007, 15h19
  3. Extraction valeur suivant plusieurs valeurs dans un tableau
    Par fabibou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 19h02
  4. [MySQL] Comment affiché un résultat avec plusieurs lignes et plusieurs champs dans un tableau
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 15/05/2007, 14h19
  5. probleme avec IE pour alignement en haut dans un tableau
    Par italiasky dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 05/02/2007, 12h48

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