Dynamiczne tworzenie dokumentów PDF

Dostałem dwa dni temu zadanie do pewnego projektu – generowanie dynamicznych plików PDF z według danych pobieranych z bazy danych. Zadanie na pozór dosyć proste. Całość miała być oparta o jakąś klasę, żeby nie tworzyć nowych cudów no bo i po co.

Po dłuższym okresie poszukiwań znalazłem bardzo pzyjazną klasę: R&OS pdf class. Ma ona bardzo dobrą dokumentację i sporo rozwiniętych funkcji, łącznie z kodowaniem i zabezpieczaniem dokumentu, więc nie będe tu tłumaczył co i jak. Dorzucę tylko coś, co spędzało mi sen z powie – kodowanie polskich znaków. A więc, przy definiowaniu czcionki dodajemy tablicę z dodatkowymi parametrami:

$mainFont = './fonts/Times-Roman.afm';
$pdf->selectFont($mainFont,array('encoding'=>'WinAnsiEncoding','differences'=>$diff));

Parametr differences wskazuje nam na kolejną tablicę $diff, która zwiera kodowanie – podmiana odpowiednich znaków w kodzie ANSI na polsie znaki

$diff=array(177=>'aogonek', 161=>'Aogonek', 230=>'cacute', 198=>'Cacute',
234=>'eogonek', 202=>'Eogonek', 241=>'nacute',
209=>'Nacute', 179=>'lslash', 163=>'Lslash', 182=>'sacute',
166=>'Sacute',188=>'zacute', 172=>'Zacute',
191=>'zdot', 175=>'Zdot');

Rzecz bardzo przydatna, a zarzem całkiem prosta pod warunkiem, że znamy sposób kodowania PDF’ów – co już jest bardziej skomplikowane.
Prostszy przykład działania tablicy $diff zawarty jest w samym FAQ. Aby uzyskać znak Euro w naszym tekście możemy zrobić cos takiego:

$diff = array(33=>'Euro');

W tym momencie znak 33 to wykrzyknik, czyli wszystkie wykrzykniki w naszym wynikowym pliku PDF zostaną zamienione na znak Є. Nic prostszego :D

Napisz komenatrz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word