fpdf
PHP powered
home was ist fpdf? downloads & add-ons dokumentation faq forum impressum links kontakt
 

Downloads > Add-On

 
         
 

Inter-letter justification

Informations

Author: Maesius
License: Freeware

Description

This method allows to justify text by extending the space between letters and not words. This produces homogen paragraphs, without the spaces usually found when justifying.
Strings longer than the requested width are broken.

Source

<?php
define
('FPDF_FONTPATH', 'font/');
require(
'fpdf.php');

class
PDF extends FPDF
{

function
Justify($text, $w, $h)
{
    $tab_paragraphe = explode("\n", $text);
    $nb_paragraphe = count($tab_paragraphe);
    $j=0;

    while ($j<$nb_paragraphe) {

        $paragraphe = $tab_paragraphe[$j];
        $tab_mot = explode(' ', $paragraphe);
        $nb_mot = count($tab_mot);

        // *** Handle strings longer than paragraph width
        $k=0;
        $l=0;
        while ($k<$nb_mot) {

            $len_mot = strlen ($tab_mot[$k]);
            if ($len_mot< ($w-5) )
            {
                $tab_mot2[$l] = $tab_mot[$k];
                $l++;    
            
} else {
                $m=0;
                $chaine_lettre='';
                while ($m<$len_mot) {

                    $lettre = substr($tab_mot[$k], $m, 1);
                    $len_chaine_lettre = $this->GetStringWidth($chaine_lettre.$lettre);

                    if ($len_chaine_lettre>($w-7)) {
                        $tab_mot2[$l] = $chaine_lettre . '-';
                        $chaine_lettre = $lettre;
                        $l++;
                    } else {
                        $chaine_lettre .= $lettre;
                    }
                    $m++;
                }
                if ($chaine_lettre) {
                    $tab_mot2[$l] = $chaine_lettre;
                    $l++;
                }

            }
            $k++;
        }

        // *** Justified lines
        $nb_mot = count($tab_mot2);
        $i=0;
        $ligne = '';
        while ($i<$nb_mot) {

            $mot = $tab_mot2[$i];
            $len_ligne = $this->GetStringWidth($ligne . ' ' . $mot);

            if ($len_ligne>($w-5)) {

                $len_ligne = $this->GetStringWidth($ligne);
                $nb_carac = strlen ($ligne);
                $ecart = (($w-2) - $len_ligne) / $nb_carac;
                $this->_out(sprintf('BT %.3f Tc ET', $ecart*$this->k));
                $this->MultiCell($w, $h, $ligne);
                $ligne = $mot;

            } else {

                if ($ligne)
                {
                    $ligne .= ' ' . $mot;
                } else {
                    $ligne = $mot;
                }

            }
            $i++;
        }

        // *** Last line
        $this->_out('BT 0 Tc ET');
        $this->MultiCell($w, $h, $ligne);
        $tab_mot = '';
        $tab_mot2 = '';
        $j++;
    }
}

}

$pdf=new PDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 9);
$pdf->Cell(85, 4, "EXAMPLE OF FUNCTION USAGE", 1, 1, 'C');
$pdf->Write(4, "\nSource: http://www.swg-fr.com\n\n");
$f=fopen('ex.txt', 'r');
$text=fread($f, filesize('ex.txt'));
fclose($f);
$pdf->Justify($text, 85, 4);
$pdf->Output();
?>

View the result here.

Download

ZIP | TGZ
 






 
         
         
 
 
fpdf.de © Copyright 2004-2006 carrib internet solutions - Beachten Sie bitte die Nutzungsbedingungen
Eine Verwendung der auf fpdf.de befindlichen Inhalte (Texte, Grafiken) ist nur mit Zustimmung des Betreibers zulässig.