www.www.zaachi.com »  Blog/Php  »  FPdf: jak na české znaky

FPdf: jak na české znaky



Jak jednoduše používat české znaky v knihovně FPdf pro generování pdf soborů.

 

Knihovna FPdf je asi nejznámější a nejlepší knihovna pro generování PDF souborů pomocí PHP. Tato knihovna je volně ke stažení na adrese fpdf.org.

Postup tady popsaný je dostupný i v dokumentaci knihovny, bohužel pouze anglicky, a asi i proto narážím dost často na tuto otázku na diskusních fórech.

Po stažení archivu z webu FPDF dostanete samotnou knihovnu jako soubor fpdf.php a navíc se ve staženém archivu nachází adresář font.

Adresář font obsahuje několik základních písem, které je možné pro generované PDF používat a přepínat se mezi nimi.

Samozřejmě není myšleno na všechny znaky a ani jeden z obsažených fontů neobsahuje znaky české abecedy. Pro podporu českých znaků je nutné si vygenerovat vlastní písmo.

Generovat vlastní písmo můžete přímo pomocí přiložené třídy MakeFont, nebo jej vygenerovat na internetu například na adrese fpdf.fruit-lab.de (tato, druhá, možnost je jednodušší).

Konvertor je schopný vygenerovat písmo použitelné pro FPDF knihovnu z jakéhokoli TTF písma. TTF písma jsou volně ke stažení na internetu nebo například v adresáři /windows/fonts (nevím jak je to s právy písem ve Windowsech).

Do formuláře stačí potom vybrat cestu k písmu na disku a vybrat správné kódování, které budete dále pro generování dokumentu používat. Bohužel třída nenabízí práci s UTF-8.

Po vygenerování dostanete několik souborů, z nichž všechny jsou důležité a všechny budete, pro správné použití písma, potřebovat:

  • .php
  • .afm
  • .t1a
  • .z

Všechny tyto soubory je nutné stáhnout a nakopírovat do adresáře font. Nyní můžete toto písmo směle používat:

define('FPDF_FONTPATH','./font/');
header('Content-Type','text/html; charset=windows-1250');

require('./fpdf.php');

$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->AddFont('muj_font', '', '0cc8680787_times.php');
$pdf->SetFont('muj_font','',16);

$pdf->Cell(40,10, "Text s diakritikou: ěščřžýáíéĚŠČŘŽÝÁÍÉŮůÚ");
$pdf->Output();
fpdf

Fpdf vs UTF-8

Bohužel knihovna FPdf nepodporuje UTF-8, a pro toto kódování budete muset řetězec převádět například pomocí Iconv:

define('FPDF_FONTPATH','./font/');
header('Content-Type','text/html; charset=windows-1250');

require('./fpdf.php');

$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->AddFont('muj_font', '', '0cc8680787_times.php');
$pdf->SetFont('muj_font','',16);

$pdf->Cell(40,10, iconv("UTF-8", "WINDOWS-1250", "Text s diakritikou: ěščřžýáíéĚŠČŘŽÝÁÍÉŮůÚAAA" ));
$pdf->Output();

 


linkuj topclanky TOPLIST.cz
rss coments img img img