Rechercher : dans
Par :

[PHP]Retour chariot avec FPDF

Dernière réponse le 28 oct 2009 à 14:52:06 Tomrage, le 2 mai 2007 à 10:40:18 
 Signaler ce message aux modérateurs

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 ^^ :)

Configuration: Windows XP
Firefox 1.5.0.11

Meilleures réponses pour « [PHP]Retour chariot avec FPDF » dans :
Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF) VoirConversion format de fichier DOS UNIX / UNIX DOS Préambule Ce qu'il faut savoir Conversion DOS vers UNIX Conversion UNIX vers DOS Préambule Il existe déjà des utilitaires (dos2unix et unix2dos) qui s'acquittent très bien ce cette...
Sed - Insérer des espacements VoirEspacement dans un fichier Ajouter une ligne blanche après chaque phrase (ponctuée par un retour chariot) : sed G fichier.txt Ajouter une ligne blanche après chaque phrase (ponctuée par un retour chariot), sans tenir compte des lignes blanches...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Code ASCII VoirLe codage des informations Le morse a été le premier codage à permettre une communication longue distance. C'est Samuel F.B.Morse qui l'a mis au point en 1844. Ce code est composé de points et de tirets (un codage binaire en quelque sorte...). Il...

1

Tomrage, le 2 mai 2007 à 14:15:01

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 ;)

Répondre à Tomrage

2

Ekweel, le 6 oct 2008 à 15:16:04
  • +1

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é.

Répondre à Ekweel

3

 younes371, le 28 oct 2009 à 14:52:06

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();
?>

Répondre à younes371