Inter-letter justification

This script allows to justify text by extending the space between letters and not words

Informations

Author: Maesius
License: FPDF

Description

This script allows to justify text by extending the space between letters and not words. This produces homogen paragraphs, without the spaces usually found when justifying.

Source

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

Example

<?php require('justification.php'); $pdf=new PDF(); $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"); $text=file_get_contents('ex.txt'); $pdf->Justify($text, 85, 4); $pdf->Output(); ?>
View the result here.

Download

ZIP | TGZ

Quelle

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