TIP: Generování českých PDF pomocí PHP

Potřebujete v PHP generovat české PDF soubory? Existuje celá řada free knihoven, které generování PDF podporují. Většina z nich ale nepodporuje české znaky, nebo jen s problémy a jen u některých fontů. O podpoře UTF-8 ani nemluvě. Ale je zde jedna světlá výjimka…

Po dlouhém snažení o opravu špatné interpretace českých znaků u jedné nejmenované knihovny jsem sedl a začal googlovat, zda nenexistuje nějaká lepší alternativa (nutnost konverze textů do jiného kódování se mi totiž také moc nezamlouvala). A nakonec jsem také vyhovující třídu našel. Je jí TCPDF — Open Source PHP třída, která podporuje UTF-8, takže čeština jí nedělá nejmenší potíže.

Její používání je jednodušší, než u některých jiných alternativ, neboť používá pozicování s pozicí 0,0 vlevo nahoře (a ne vlevo dole, jak je tomu u PDF standartně). Poradí si také s výpisem jednoduchého HTML (to se hodí např. pro tabulky). Menší nevýhodou je neschopnost zalamovat text při výskytu \n, to se dá ale lehce spravit následujícím rozšířením:

<?php
class Pdf extends TCPDF {
    public function 
Text($x$y$txt) {
        foreach(
explode("\n"$txt) as $line) {
           
parent::Text($x$y$line);
           
$y += $this->FontSizePt $this->k;
        }
        return 
$y;
    }
}
?>

 

Třídu pak lze jednoduše použít (např. pro vygenerování obálky s adresou):

<?php
define
("ADDRESS""Jméno Příjmení\nUlice 123\n123 45, Město");


$pdf = new Pdf(PDF_PAGE_ORIENTATIONPDF_UNIT, array(623.62311.81), true);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor("Hopkins");
$pdf->SetTitle("Ukázkový dokument - obálka");

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
require(
"config/lang/cs.php");
$pdf->setLanguageArray($l);
$pdf->SetFont("FreeSerif""b"18);

$pdf->AddPage();

$lines explode("\n"ADDRESS);
$maxWidth 0;
foreach(
$lines as $line) {
   
$width $pdf->GetStringWidth($line);
    if (
$width $maxWidth$maxWidth $width;
}
$pdf->Text(580-$maxWidth175ADDRESS);

$pdf->Output();
?>

 

Přeji hodně úspěchů při generování vašich vlastních PDF .-)

Publikováno 2. 2. 2008 3:49