Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : creation template PDF

creation template PDF il y a 9 ans 6 mois #20996

  • erick
  • Portrait de erick
Bonjour à tous.

Je suis toujours sur mon module de gestion administrative de la formation pro qui ne devrait plus tarder à sortir en version beta.
Je génére actuellement les derniers template pdf.
Je rencontre un problème dans la gestion dynamique de la hauteur d'un multicell.
J'ai bien trouvé plusieurs liens qui m'oriente vers la page fpdf.org/fr/script/script3.php, mais je n'arrive pas à l'adapter au template Dolibar...

J'ai bien créé la méthode NbLines dans ma classe agf_pdf_document (class agf_pdf_document extends FPDF) mais je n'arrive pas à l'utiliser...

function NbLines($w, $txt, $FontSize)
{
//Calcule le nombre de lignes qu'occupe un MultiCell de largeur w
$cw=&$this->CurrentFont;
//if($w==0) $w=$this->w-$this->rMargin-$this->x;
if($w==0) $w=$this->espaceH_dispo;
//$wmax=($w-2*$this->cMargin)*1000/ ;
$wmax=(($w-2*$this->espaceH_dispo)*1000/$FontSize);
$wmax=$this->espaceH_dispo;
//print '$wmax ='.$wmax."\n";
//print '$FontSize ='.$FontSize;exit;
$s=str_replace("\r",'',$txt);
$nb=strlen($s);
if($nb>0 and $s[$nb-1]=="\n") $nb--;
$sep=-1;
$i=0;
$j=0;
$l=0;
$nl=1;
while($i<$nb)
{
$c=$s[$i];
if($c=="\n")
{
$i++;
$sep=-1;
$j=$i;
$l=0;
$nl++;
continue;
}
if($c==' ') $sep=$i;
$l+=$cw[$c];
if($l>$wmax)
{
if($sep==-1)
{
if($i==$j) $i++;
}
else $i=$sep+1;
$sep=-1;
$j=$i;
$l=0;
$nl++;
}
else $i++;
}
return $nl;
}

Mais lorsque je l'appelle depuis write_file:
$this->NbLines(0 , $this->str, $this->defaultFontSize);
J'obtiens toujours la valeur 1 :-(

Naturellement, les varaibles $this->defaultFontSize et $this->FontSize sont définies dans la classe...

Une idée?

Merci à tous et bonne soirée.
Dernière édition: il y a 9 ans 6 mois par erick.
L'administrateur a désactivé l'accès en écriture pour le public.

Re:creation template PDF il y a 9 ans 6 mois #20999

  • erick
  • Portrait de erick
Milles excuses pour le bruit...

Une relecture tranquille ce matin m'a donnée la solution qui était évidente...
Il suffit de passer &$pdf en premier paramètre et de remplacer $this par $pdf dans la fonction...

Il faut également penser à transmettre la hauteur de ligne du multicell en dernier paramétre ($hauteur).
le return sera donc modifié comme suit:
return $nl * $hauteur;

ensuite, tout roule...

HTH
L'administrateur a désactivé l'accès en écriture pour le public.