[FPDF] Problème de disposition Multicell après un Page Break

Problème de disposition Multicell après un Page Break [FPDF] - PHP - Programmation

Marsh Posté le 12-02-2014 à 09:40:17    

Bonjour à tous je suis nouveau sur ce petit forum et après 2 jours à chercher sans relâche je m'en remet à vous chers codeurs...
Je dois faire un formulaire dans lequel on doit retrouver les informations des intervenants d'un chantier.
Sur la première page tout vas bien mais dès que je change de page, mon GetY fait n'importe quoi et décide de se mettre sur la 3e page.
J'ai remarqué également qu'en remettant en mode portrait le probleme était résolu. Mais il me faut un mode paysage impérativement :/
 
Voici mon code et un screen en pièce jointe (Flouté et censuré pour ne pas dévoiler le nom des clients :)
 

Code :
  1. // En-tête
  2. function Header()
  3. {
  4. global $descriptif;
  5. // Logo
  6. $this->Image('images/facet.png',10,6,30);
  7. // Police Arial gras 15
  8. $this->SetFont('Arial','B',15);
  9. // Décalage à droite
  10. $this->Cell(80);
  11. // Titre
  12. $this->Cell(118,10,'Liste des Intervenants "'.$descriptif.'"',0,0,'C');
  13. // Saut de ligne
  14. $this->Ln(15);
  15.  $this->SetFont('Times','B',15);
  16. }
  17. // Pied de page
  18. function Footer()
  19. {
  20. // Positionnement à 1,5 cm du bas
  21. $this->SetY(-15);
  22. // Police Arial italique 8
  23. $this->SetFont('Arial','I',8);
  24. // Numéro de page
  25. $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
  26. }
  27. }
  28. // Connection à la BDD
  29. $l1 = mysql_connect($host,$user,$password);
  30. $db_selected = mysql_select_db($base, $l1);
  31. mysql_query("SET NAMES 'utf8'" );
  32. // Récupération du nom du chantier
  33. $sql = "SELECT descriptif FROM chantier WHERE id_chantier=".$clean1['id_chantier']."";
  34. $req = mysql_query($sql) or die('Erreur SQL !<br />'.mysql_error());
  35. $recupbdd=mysql_fetch_array($req);
  36. $descriptif = $recupbdd['descriptif'];
  37. // Récupération id intervenants en fonction de l'id chantier
  38. $sql4 = "SELECT id_societe, id_lot FROM intervenant WHERE id_chantier = ".$clean1['id_chantier']." AND (type ='partenaire' OR type='entreprise')";
  39. $req4 = mysql_query($sql4) or die('Erreur SQL !<br />'.mysql_error());
  40. // i=1 couleur / i=0 transparent //
  41. $i=0;
  42. // Instanciation de la classe dérivée
  43. $pdf = new PDF('L','mm','A4');
  44. $pdf->AliasNbPages();
  45. $pdf->AddPage();
  46. $pdf->SetFillColor(242,221,220);
  47.  // Récupération des informations intervenants
  48.  while ($recupbdd4=mysql_fetch_array($req4)){
  49.   $sql5 = "SELECT DISTINCT lots.nom as nom_lot, societe.nom as nom_soc, adresse_1, cp, ville, telephone, fax, courriel FROM societe, lots,intervenant WHERE lots.id=intervenant.id_lot AND intervenant.id_societe=societe.id_societe AND societe.id_societe =".$recupbdd4['id_societe']." AND id=".$recupbdd4['id_lot'];
  50.   $req5 = mysql_query($sql5) or die('Erreur SQL !<br />'.mysql_error());
  51.   $recupbdd5=mysql_fetch_array($req5);
  52.   $i++;
  53.   $chaine = utf8_decode(umep_formtextarea($recupbdd5['nom_soc']));
  54.   $chaine2 = utf8_decode(umep_formtextarea($recupbdd5['adresse_1'].' - '.$recupbdd5['cp'].' '.$recupbdd5['ville'].' - tél.'.$recupbdd5['telephone'].' - fax '.$recupbdd5['fax']));
  55.   $pdf->SetFont('Times','B',12);
  56.   $longueur = $pdf -> GetStringWidth ($chaine);
  57.   $pdf->SetFont('Times','',12);
  58.   $longueur2 = $pdf -> GetStringWidth ($chaine2);
  59.   // Hauteur par défaut des Multicell
  60.   $h2=7;
  61.   $h1=7;
  62.   //Hauteur modifiée en fonction de la taille du texte.
  63.   if ($longueur2 > 209)
  64.   {
  65.    $h1=14;
  66.   }
  67.   elseif ($longueur > 67)
  68.   {
  69.    $h2=14;
  70.   }
  71.   if ($i & 1 == 1)
  72.   {
  73.    $pdf->SetFont('Times','BU',12);
  74.    $pdf -> Cell(0,7,utf8_decode(umep_formtextarea($recupbdd5['nom_lot'])),'TLR',1,'L',true);
  75.    $pdf->SetFont('Times','B',12);
  76.    $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  77.    $cell_width = 68;
  78.    $pdf -> MultiCell($cell_width,$h1,$chaine,'L', "C",true);
  79.    $pdf->SetFont('Times','',12);
  80.    $pdf->SetXY($current_x + $cell_width, $current_y);
  81.    $pdf -> MultiCell(209,$h2,$chaine2,'R','L',true);
  82.   }
  83.   else
  84.   {
  85.    $pdf->SetFont('Times','BU',12);
  86.    $pdf -> Cell(0,7,utf8_decode(umep_formtextarea($recupbdd5['nom_lot'])),'TLR',1,'L');
  87.    $pdf->SetFont('Times','B',12);
  88.    $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  89.    $cell_width = 68;
  90.    $pdf -> MultiCell($cell_width,$h1,$chaine,'L', "C" );
  91.    $pdf->SetFont('Times','',12);
  92.    $pdf->SetXY($current_x + $cell_width, $current_y);
  93.    $pdf -> MultiCell(209,$h2,$chaine2,'R','L');
  94.   }
  95.   //Récupération des informations des membres intervenants
  96.   $sql9 = "SELECT DISTINCT id_intervenant, id_societe, id_lot FROM intervenant WHERE id_chantier=".$clean1['id_chantier']." AND (type='partenaire' OR type='entreprise')AND id_societe= ".$recupbdd4['id_societe']."";
  97.   $req9 = mysql_query($sql9) or die('Erreur SQL !<br />'.mysql_error());
  98.   while ($recupbdd9=mysql_fetch_array($req9)){
  99.    $sql10 ="SELECT DISTINCT id_adherent from intervenant_contact where id_intervenant=".$recupbdd9['id_intervenant']." AND id_lot=".$recupbdd9['id_lot']."";
  100.    $req10 = mysql_query($sql10) or die('Erreur SQL !<br />'.mysql_error());
  101.    while($recupbdd10=mysql_fetch_array($req10)){
  102.     $sql11 ="SELECT DISTINCT nom,telephone,courriel FROM utilisateur WHERE id_utilisateur=".$recupbdd10['id_adherent']."";
  103.     $req11 = mysql_query($sql11) or die('Erreur SQL !<br />'.mysql_error());
  104.     while($recupbdd11=mysql_fetch_array($req11)){
  105.      $chaine2 = utf8_decode(umep_formtextarea($recupbdd11['nom'].' - tél. : '.$recupbdd11['telephone']." - ".$recupbdd11['courriel']));
  106.      $pdf->SetFont('Times','',12);
  107.      $longueur2 = $pdf -> GetStringWidth ($chaine2);
  108.      $h2=5;
  109.      $h1=5;
  110.      if ($longueur2 > 207)
  111.      {
  112.       $h1=10;
  113.      }
  114.      if ($i & 1 ==1)
  115.      {
  116.       $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  117.       $cell_width = 68;
  118.       $pdf -> Multicell(68,$h1,'Contact','RL','C',true);
  119.       $pdf->SetXY($current_x + $cell_width, $current_y);
  120.       $pdf -> Multicell(0,$h2,$chaine2,'R',1,true);
  121.      }
  122.      else
  123.      {
  124.       $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  125.       $cell_width = 68;
  126.       $pdf -> Multicell(68,$h1,'Contact','L','C');
  127.       $pdf->SetXY($current_x + $cell_width, $current_y);
  128.       $pdf -> Multicell(0,$h2,$chaine2,'R',1);
  129.      }
  130.     }
  131.    }
  132.   }
  133.  }
  134.  $pdf -> Cell(0,0,'',1,'L');
  135. $pdf->Output();


 
Lien Image : http://hpics.li/df44b14


Message édité par renjps le 12-02-2014 à 09:41:08
Reply

Marsh Posté le 12-02-2014 à 09:40:17   

Reply

Marsh Posté le 14-02-2014 à 16:43:35    

simple :

Code :
  1. $pdf->AddPage('landscape');
  2. au lieu de :
  3. $pdf->AddPage();


Message édité par sltpaulo le 14-02-2014 à 16:43:56
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed