Indented MultiCell

This is an adaptation of the MultiCell() method which adds the possibility to indent the first line

Informations

Author: Mathieu François-Xavier
License: FPDF

Description

This is an adaptation of the MultiCell() method which adds the possibility to indent the first line.

Source

<?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; } } ?>

Example

<?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(); ?>
View the result here.

Download

ZIP | TGZ

Quelle

http://www.fpdf.org/en/script/script39.php, zuletzt abgerufen 02.10.2016 15:03