[RESOLU] Fpdf et multicelle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Fpdf et multicelle

Re: Fpdf et multicelle

par Paskalito » 20 nov. 2014, 02:24

Bonjour

J'ai eu le même problème qui a été résolu simplement de la manière suivante :
mettre l'ecriture en blanc et d'afficher à un endroit de la page qui n'est pas encore utiliser (endroit d'un logo par exemple).
puis afficher (en couleur blanche) le texte. Récuperer la valeur du positionnement par GetY() et faire la difference avec le positionnement initial et faire la division de la hauteur de la cellule ce qui donne exactement le nombre de ligne. Bien sur il faut que la largeur de Multicell soit identique
Ce qui donne le code

$pdf->SetTextColor(255,255,255);
$pdf->SetXY(7,0);
$pdf->MultiCell(90,10,$plat[$k],0,"C");
$yy=$pdf->GetY();
$pdf->SetXY(7+$i*96.5,$y+15+160*$j+$k*$hauteur_ligne);
if ($yy==10) {$nb_ligne=1;} else {if ($yy==20) {$nb_ligne=2;} else {$nb_ligne=3;}}

$pdf->SetTextColor(0,0,0);
$pdf->MultiCell(90,($yy/$nb_ligne),$plat[$k],1,"C",true);

Bien sur c'est un extrait de mon code.... il y a des variables comme $i $y $j $k qui me serve à positionner ma cellule sur ma page

J'espere que j'ai ete claire. Ca fonctionne à merveille

Re: Fpdf et multicelle

par Aureusms » 09 août 2014, 09:53

Bon je t'ai fais cette petite fonction rapide mais ça fonctionne :
<?php
//permet de scinder une string à un nombre de caractères précis et le stocke dans un tableau
function coupePhraseDansTableau ($string=false,$longueur=24) {
	
	//si pas de paramètres
	if (empty($string))
		return false;	
	$m = "^$^";	
	$s = wordwrap($string, $longueur, $m, true);
	return explode($m,$s);
}
$s = "Eodem tempore Serenianus ex duce, cuius ignavia populatam in Phoenice Celsen ante rettulimus, pulsatae maiestatis imperii reus iure postulatus ac lege, incertum qua potuit suffragatione absolvi, aperte convictus familiarem suum cum pileo, quo caput operiebat, incantato vetitis artibus ad templum misisse fatidicum, quaeritatum expresse an ei firmum portenderetur imperium, ut cupiebat, et cunctum."
$tab = coupePhraseDansTableau ($s);

//nombre totale de ligne
echo count($tab);

//affichage de toutes les lignes avec un retour chariot
foreach ($tab as $l) :
	echo $l."\n";
endforeach;

Re: Fpdf et multicelle

par Aureusms » 09 août 2014, 09:32

C'est çà qu'est fun ! Si c'était pas compliqué ce ne serait pas amusant !

Re: Fpdf et multicelle

par lily20 » 09 août 2014, 09:27

ah oui j'ai pas pensé à ça ! le plus dur étant que le nombre de caractères par ligne varie car le retour automatique se fait toujours sur un espace pour éviter de couper un mot en deux. Ce qui complique bien sûr la tâche ! lol

Re: Fpdf et multicelle

par Aureusms » 08 août 2014, 22:24

Moi je comptais le nombre de caractères et j'en déduisais le nombre de ligne en automatique.
Ex avec strlen() tu comptes le nombre de caractères que tu vas affichées. Si tu ne peux afficher qu'un certain nombre de caractères pas cellule, si ce nombre est dépassé, tu calcules la valeur absolue des multiples.

Ex. pour 24 caractères et une string de 129 caractères = 6 lignes

Re: Fpdf et multicelle

par lily20 » 08 août 2014, 22:16

Bonsoir et merci pour ta réponse.
J'ai trouvé une fonction qui compte les lignes quand tu as un retour manuel, mais c'est le retour à la ligne automatique que je n'arrive pas à compter.
Si quelqu'un a le code, ça m'arrangerait bien j'avoue ! lol

Re: Fpdf et multicelle

par Aureusms » 08 août 2014, 19:42

J'ai eu un problème similaire pour un calcul de hauteur de ligne dans un tableau lorsque une cellule de ce tableau comportait un retour à la ligne.
J'ai dû calculer ligne par ligne le maximum obtenus pour la plus grande cellule et l'ai appliqué à toute les "cells" de FPDF de la même lignes

Je n'ai pas de code à de donner car j'ai changé de boite depuis mais le principe est là.

Fpdf et multicelle

par lily200 » 08 août 2014, 15:19

Bonjour à tous !

Voilà mon problème :

Dans un tableau, j'ai deux multicell côte à côte de hauteur variable car avec des champs "text", il est impossible de savoir combien de lignes vont avoir mes multicell. Donc, je voudrais, avant l'impression, compter les lignes et ainsi programmer la hauteur de ligne d'après le multicell qui comportera le plus de lignes.
J'ai trouvé une fonction sur le site de FPDF qui compte les lignes, mais cela ne fonctionne que pour les sauts de ligne insérés manuellement dans le champ text. Impossible de compter les sauts de ligne automatiques (qui se font lors de l'impression en pdf).

Quelqu'un aurait-il une solution ? Je bataille depuis deux jours pour ça.

Merci pour vos réponses ;-)