Vytvoriť PDF dokument s diakritikou nie je veľký problém, keď viete zvoliť to
správne písmo a kódovanie. Pre tvorbu nepoužívam vstavanú PDF knižnicu ale iba
skvelú PHP triedu – FPDF.
Prináša mnoho výhod ako voľba rozmerov, určenie formátu stránky, odsadenia,
záhlavie a spodok dokumentu, automatické zalamovanie stránok a riadkov,
centrovanie textu, podpora obrázkov JPEG a PNG, farby pre rôzne elementy,
hypertextové odkazy, TrueType, Type1 a podpora kódovaní,
kompresia dokumentu (vyžaduje Zlib knižnicu). Osobne si pre PDF volím písmo Trebuchet MS. Je možné použiť aj krajšie
písmo, napr. Palatino Linotype ale treba myslieť aj na veľkosť
dokumentu. S Trebuchet MS bude mať dokument niečo cez 300kB. S Palatino Linotype
vyše 1,2MB. Postup osadenia TrueType písma do PDF dokumentu je celkom dlhý proces. Najprv
je potrebné z .ttf súboru vytvoriť metrický súbor .afm.
Pomocou .afm súboru ďalej vygenerovať definičný PHP súbor. Posledným krokom je prekódovanie vstupu napr. z
UTF-8 (zvolíte vaše kódovanie vstupných dát) do cp1250.
Pre vytvorenie .afm súboru je nutné stiahnúť si utilitu
ttf2pt1.
Používatelia Windows ju stiahnú tu.
Zapnite si príkazový riadok a napíšte nasledovné:
ttf2pt1 -a c:\windows\fonts\trebuc.ttf trebuc ttf2pt1 -a c:\windows\fonts\trebucbd.ttf trebucbd ttf2pt1 -a c:\windows\fonts\trebucbi.ttf trebucbi ttf2pt1 -a c:\windows\fonts\trebucit.ttf trebucit
Pokiaľ ste si ešte nestiahli FPDF, stiahnite ho.
V zložke font/makefont/ sa nachádza súbor makefont.php, ktorý vytvorí definičný PHP súbor
funkciou MakeFont().
Vytvorte nový PHP súbor s obsahom:
<?php
include_once('font/makefont/makefont.php');
MakeFont('c:\windows\fonts\trebuc.ttf','trebuc.afm','cp1250');
MakeFont('c:\windows\fonts\trebucbd.ttf','trebucbd.afm','cp1250');
MakeFont('c:\windows\fonts\trebucbi.ttf','trebucbi.afm','cp1250');
MakeFont('c:\windows\fonts\trebucit.ttf','trebucit.afm','cp1250');
?>
Po ukončení skriptu sa vyskytnú aj varovania o chýbajúcich znakoch. Ignorujte ich a všimnite si radšej 8 nových súborov. 4 s koncovkou .z a ďalšie 4 s koncovkou .php. Ich názov sa začína na trebuc… Všetky nakopírujte do zložky font/.
Dávajte pozor na kódovanie skriptu. Ja používam iba UTF-8, takže budem potrebovať PHP rozšírenie iconv, aby som mohol prekódovať vstup z UTF-8 do cp1250.
<?php
define('FPDF_FONTPATH','font/');
require('fpdf.php');
// reťazec, ktorý má byť v PDF dokumente
$text = 'Veríte, že tento PDF dokument dokáže zobraziť základnú diakritiku: ľščťžýáíéúäô';
// prekódovať obsah do cp1250
$text = iconv('UTF-8','CP1250',$text);
// vytvoriť novú inštanciu FPDF
$pdf = new FPDF();
// pridať písma
$pdf->AddFont('trebuc','','trebuc.php');
$pdf->AddFont('trebuc','B','trebucbd.php');
$pdf->AddFont('trebuc','I','trebucit.php');
$pdf->AddFont('trebuc','BI','trebucbi.php');
// vytvoriť PDF dokument
$pdf->AddPage();
$pdf->SetFont('trebuc','',11);
$pdf->MultiCell(0,5,$text);
$pdf->Output();
?>
| Windows XP (Adobe Reader) | Fedora Core 6 (KPDF) |
|---|---|
![]() |
![]() |
Výsledný PDF dokument si stiahnete tu. PDF generované na tejto stránke ešte nefungujú s diakritikou, ale pripravujem novú verziu PDF exportu. Príklad si môžete prezrieť tu.