[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
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
A voir également:
- [PHP]Retour chariot avec FPDF
- Easy php - Télécharger - Divers Web & Internet
- Retour à la ligne excel - Guide
- Retour arrière clavier - Guide
- Retour scan - Forum Logiciels
- Fpdf utf8 ✓ - Forum PHP
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é.
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é.
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 ;)
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 ;)
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();
?>
<?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();
?>
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
15 mars 2013 à 20:58
Merci beaucoup pour cette aide Younes !