Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2356 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  FPDF et MultiCell()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

FPDF et MultiCell()

n°2069255
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 11-04-2011 à 13:58:23  profilanswer
 

Bonjour.
 
J'essaie d'utiliser le multicell de fpdf, mais j'ai un soucis.
 
j'ai une ligne, comprenant dans l'ordre :
 
Date - Nom Prénom - Moyen de paiement - Montant
 
Donc, 4 colonnes.
j'utilise des Cell sauf pour le noms des MultiCell au cas où le nom soit trop grand.
 
Donc, je suis obligé de faire des getx gety et setx sety pour me recaler pour le moyen de paiement et le montant.
 
Mon soucis vient du fait que je ne sais pas comment recaler le total de la ligne qui a un nom à rallonge.
en lui mettant un $y+10 par exemple, s'il y a une ligne de plus.
 
voici le bout de code qui gère l'affichage du pdf :

Code :
  1. $pdf->Cell(20,10,"" );
  2.  $pdf->Cell(40,10,dateUsToFr($date));
  3.  $x = $pdf->getX();
  4.  $y = $pdf->getY();
  5.  $pdf->MultiCell(55,10,$Tb['Nom_Patient']." ".$Tb['Prenom_Patient'],1);
  6.  $pdf->setX($x+60);
  7.  $pdf->setY($y);
  8.  if ($Tb['Moyen_Paiement']=="Chèque" AND $Tb['Numero_Cheque']!="" )
  9.  {
  10.   $num_chq="(".$Tb['Numero_Cheque']." )";
  11.  }
  12.  $pdf->setX($x+60);
  13.  $pdf->Cell(40,10,$Tb['Moyen_Paiement']." ".$num_chq);
  14.  $pdf->setX($x+100);
  15.  $pdf->Cell(30,10,$Tb['Montant_TTC']);
  16.  $pdf->Ln();
  17.  $total_general+=$Tb['Montant_TTC'];


mood
Publicité
Posté le 11-04-2011 à 13:58:23  profilanswer
 

n°2069266
olivthill
Posté le 11-04-2011 à 14:17:19  profilanswer
 

Peut-être faudrait-il remplacer :

$pdf->Cell(30,10,$Tb['Montant_TTC']);

par :

$y = $pdf->getY();
 $pdf->setY($y + 10);
 $pdf->Cell(30,10,$Tb['Montant_TTC']);


Ou alors, je n'ai pas compris la question ?

n°2069269
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 11-04-2011 à 14:38:23  profilanswer
 

Non, tu as raison, je me suis mal exprimé.
En fait, j'ai tenté cela, mais cela me décale tous les moyens de paiement et totaux à la ligne du dessous.

 

ex :

 

11/04/2011  Mr Dusmoque Alain     Chèque 75€
11/04/2011  Mme De La villadières Chèque 65€
                  Marie-genevièves

 

Donc, ma multicell fonctionne bien, mais j'aimerai que le montant et le moyen de paiement soit à y+10 Si et seulement si la multicellule à 2 lignes, si 3, alors y+20 etc...

 

car ensuite j'ai un total, et se total s'écrit par dessus le prénom qui est sur la seconde ligne de la multi cellule.

 


Je vais faire un screen, cela sera plus simple
j'ai mis les bordures, pour bien voir la multicell

 

http://www.izipik.com/images/201104/11/h7shi9kdx1gxmiogow-pdf.png

 


En gros ce que j'aimerai c'est un
if (multicell == 2 lignes) { $y = $y+10}

 

mais aucune idée si cela existe et comment le syntaxier


Message édité par Bakk15 le 11-04-2011 à 14:41:07
n°2069277
olivthill
Posté le 11-04-2011 à 15:39:26  profilanswer
 

"La méthode NbLines() renvoie le nombre de lignes qu'occupe un MultiCell."
C'est ce qui est indiqué sur la page "Tableau avec MultiCells" de l'onglet "Scripts" du site http://www.fpdf.org/
 
Je ne sais pas très bien quels paramètres donner à NbLines, mais cela doit pouvoir se trouver.


Message édité par olivthill le 11-04-2011 à 15:39:47
n°2069280
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 11-04-2011 à 16:10:35  profilanswer
 

merci beaucoup, je vais regarder cela :jap:

n°2069287
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 11-04-2011 à 16:40:48  profilanswer
 

Donc, c'était bien cela :

 
Code :
  1. function NbLines($w,$txt)
  2. {
  3. $cw=&$this->CurrentFont['cw'];
  4. if($w==0)
  5.  $w=$this->w-$this->rMargin-$this->x;
  6. $wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
  7. $s=str_replace("\r",'',$txt);
  8. $nb=strlen($s);
  9. if($nb>0 and $s[$nb-1]=="\n" )
  10. $nb--;
  11. $sep=-1;
  12. $i=0;
  13. $j=0;
  14. $l=0;
  15. $nl=1;
  16.  while($i<$nb)
  17.  {
  18.   $c=$s[$i];
  19.   if($c=="\n" )
  20.   {
  21.    $i++;
  22.    $sep=-1;
  23.    $j=$i;
  24.    $l=0;
  25.    $nl++;
  26.    continue;
  27.   }
  28.   if($c==' ')
  29.       $sep=$i;
  30.   $l+=$cw[$c];
  31.   if($l>$wmax)
  32.   {
  33.    if($sep==-1)
  34.    {
  35.     if($i==$j)
  36.      $i++;
  37.    }
  38.    else
  39.     $i=$sep+1;
  40.    $sep=-1;
  41.    $j=$i;
  42.    $l=0;
  43.    $nl++;
  44.   }
  45.   else
  46.       $i++;
  47.  }
  48.       return $nl;
  49. }
 


et l'appel :

 
Code :
  1. $nb = $pdf->NbLines(55,$txtnp);
 

$nb est donc mon nombre de lignes

 

avec mon petit if

 
Code :
  1. if($nb>1)
  2.   $y=$y+10;
 

merci :jap:


Message édité par Bakk15 le 11-04-2011 à 16:41:49

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  FPDF et MultiCell()

 

Sujets relatifs
FPDF - Affichage sous conditionFPDF Mettre en gras un morceau de texte
Taille d'une chaine dans un pdf (fpdf)[fpdf] Probleme d'encodage
comment utiliser fpdfProblème image en FPDF
Problème php pour FPDFProblème interprétation entre php et fpdf
FPDFfpdf : générer plusieurs pdf en même temps
Plus de sujets relatifs à : FPDF et MultiCell()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR