[PHP]Retour chariot avec FPDF

Fermé
Tomrage - 2 mai 2007 à 10:40
Nivernus Messages postés 1 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 15 mars 2013 - 15 mars 2013 à 20:58
Bonjour!
J'ai une base de données SQL. Dans celle-ci se trouve un champ provenant d'un texte area. Par conséquent les retours à la ligne sont accéptés. Je n'ai aucun probléme a afficher les retours chariots sur ma page php.
Cependant, je suis en train d'afficher certains champs sur un document PDF via la librairie FPDF dont le champ texte area avec ces fameux retours chariots. Savez vous s'il est possible d'afficher ces retours chariots sur le document PDF via la librairie FPDF?
Merci d'avance pour vos réponses ^^ :)
A voir également:

3 réponses

Non justement. La fonction nl2br() porte bien son nom. Elle transforme les caractères "\n" en "<br />".

En gros celà sert à transformer les retour à la ligne en retour à la ligne "façon html". Car le caractère "\n" n'est pas interprété en HTML. Il faut le transformer en balise "<br />".

Donc evidemment tu n'as pas à utiliser cette fonction pour faire un retour à la ligne en PDF.

Par-contre j'avoue avoir le même problème que toi pour faire mes retours à la ligne en PDF, avec FPDF. Donc si quelqu'un à la solution... ;)

Pendant ce temps je cherche de mon côté.
3
J'ai avancé depuis ce matin. Cependant, il me rerste un petit probleme a resoudre.
En effet, pour gerer les retour chariots, j'ai utlisé n2lbr (ce qui est tout a fait normal).
Cependant, lors de la création de mon PDF, celui-ci n'interprete pas les balises \r\n.
Voici mon code :

$reqsql="SELECT marquage from `equipement` where ID='totop'";
if(mysql_query($reqsql,$db))
{
//Lecture de la table des résultats
$result=mysql_query($reqsql,$db);
if($res=mysql_fetch_assoc($result))
{
$data=nl2br("$res[marquage]");
$pdf->Cell(0,10,"$data",0,1,"l");
}
}

Et voici ce que j'obtiens sur le PDF :

Matériels de marquage :
toto<br />titi<br />tutu<br />tata


Merci de votre aide ;)
1
Voilà la solution :

<?php
require('fpdf.php');

class PDF extends FPDF {

function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false, $indent=0)
{
//Output text with automatic or explicit line breaks
$cw=&$this->CurrentFont['cw'];
if($w==0)
$w=$this->w-$this->rMargin-$this->x;

$wFirst = $w-$indent;
$wOther = $w;

$wmaxFirst=($wFirst-2*$this->cMargin)*1000/$this->FontSize;
$wmaxOther=($wOther-2*$this->cMargin)*1000/$this->FontSize;

$s=str_replace("\r",'',$txt);
$nb=strlen($s);
if($nb>0 && $s[$nb-1]=="\n")
$nb--;
$b=0;
if($border)
{
if($border==1)
{
$border='LTRB';
$b='LRT';
$b2='LR';
}
else
{
$b2='';
if(is_int(strpos($border,'L')))
$b2.='L';
if(is_int(strpos($border,'R')))
$b2.='R';
$b=is_int(strpos($border,'T')) ? $b2.'T' : $b2;
}
}
$sep=-1;
$i=0;
$j=0;
$l=0;
$ns=0;
$nl=1;
$first=true;
while($i<$nb)
{
//Get next character
$c=$s[$i];
if($c=="\n")
{
//Explicit line break
if($this->ws>0)
{
$this->ws=0;
$this->_out('0 Tw');
}
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
$i++;
$sep=-1;
$j=$i;
$l=0;
$ns=0;
$nl++;
if($border && $nl==2)
$b=$b2;
continue;
}
if($c==' ')
{
$sep=$i;
$ls=$l;
$ns++;
}
$l+=$cw[$c];

if ($first)
{
$wmax = $wmaxFirst;
$w = $wFirst;
}
else
{
$wmax = $wmaxOther;
$w = $wOther;
}

if($l>$wmax)
{
//Automatic line break
if($sep==-1)
{
if($i==$j)
$i++;
if($this->ws>0)
{
$this->ws=0;
$this->_out('0 Tw');
}
$SaveX = $this->x;
if ($first && $indent>0)
{
$this->SetX($this->x + $indent);
$first=false;
}
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
$this->SetX($SaveX);
}
else
{
if($align=='J')
{
$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
$this->_out(sprintf('%.3f Tw',$this->ws*$this->k));
}
$SaveX = $this->x;
if ($first && $indent>0)
{
$this->SetX($this->x + $indent);
$first=false;
}
$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);
$this->SetX($SaveX);
$i=$sep+1;
}
$sep=-1;
$j=$i;
$l=0;
$ns=0;
$nl++;
if($border && $nl==2)
$b=$b2;
}
else
$i++;
}
//Last chunk
if($this->ws>0)
{
$this->ws=0;
$this->_out('0 Tw');
}
if($border && is_int(strpos($border,'B')))
$b.='B';
$this->Cell($w,$h,substr($s,$j,$i),$b,2,$align,$fill);
$this->x=$this->lMargin;
}
}

?>

nomme le fichier par exemple : mc_indent.php

<?php
require('mc_indent.php');

$InterLigne = 7;

$pdf=new PDF();
$pdf->AddPage();
$pdf->SetMargins(30,10,30);
$pdf->SetFont('Arial','',12);

$txt = "Cher Pierre";
$txtLen = $pdf->GetStringWidth($txt);
$milieu = (210-$txtLen)/2;
$pdf->SetX($milieu);
$pdf->Write(5,$txt);

$pdf->ln(30);
$txt = "Voici venu le temps pour toi de renouveler ta licence-assurance, en effet celle-ci expire le 28/9 prochain. Tu trouveras joint à ce document le certificat d'aptitude à faire remplir par le médecin.";
$pdf->MultiCell(0,$InterLigne,$txt,0,'J',0,15);

$pdf->ln(10);
$txt = "Je me permets de te rappeler que cette licence est obligatoire et nécessaire à la pratique de notre sport favori, tant à l'occasion de nos entraînements qu'à toutes autres manifestations auxquelles tu peux participer telles que compétitions, cours fédéraux ou visites amicales dans un autre club.";
$pdf->MultiCell(0,$InterLigne,$txt,0,'J',0,15);

$pdf->ln(10);
$txt = "Dès lors, je te saurais gré de bien vouloir me retourner le certificat d'aptitude dûment complété par le médecin accompagné de ton paiement de 31 € ou de la preuve de celui-ci par virement bancaire. Le tout dans les plus brefs délais afin de ne pas interrompre la couverture de ladite assurance et par la même occasion de t'empêcher de participer à nos cours le temps de la régularisation. Il y va de ta sécurité.";
$pdf->MultiCell(0,$InterLigne,$txt,0,'J',0,15);

$pdf->ln(10);
$txt = "Merci de la confiance que tu mets en notre club pour ton épanouissement sportif.";
$pdf->MultiCell(0,$InterLigne,$txt,0,'J',0,15);

$pdf->ln(10);
$txt = "Le comité";
$pdf->MultiCell(0,$InterLigne,$txt,0,'R',0);

$pdf->Output();
?>
0
merci younes pour l'aide que tu nous offre ;)
0
C'est avec un très grand plaisir,
Nous sommes là pour partager l'information
0
Nivernus Messages postés 1 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 15 mars 2013
15 mars 2013 à 20:58
Merci beaucoup pour cette aide Younes !
0