Barem vam se jednom desilo, ili će vam se desiti da ćete trebati PDF generirati iz PHP-a, no ubrzo ćete odustati kada primjetite da nema hrvatskih slova...
UFPDF, FPDF, TCPDF, CPDF, PDFlib... samo su neki od library-ja i klasa koje su ponuđene za izradu PDF dokumenata iz PHP-a.
Oni koji su probali raditi sa bilo kojim od nabrojanih alata, susreli su se barem sa jednim od slijedećih problema:
- Izgenerirani PDF file je ogroman i samim time neupotrebljiv
- Pretvaranje html koda u pdf je gotovo neizvedivo
- Hrvatski znakovi ne rade, kao niti simboli poput €, £
- Generiranje većih datoteka traje predugo
Nakon što se uvjerite u sve navedeno, vidjet ćete da je zapravo jedini dokumentirani način kako sve 3 stavke zaobići i uspješno doći do rješenja, da platite 995 $ lihvarima koji se zovu PDFlib GmbH i kupite serversku verziju biblioteke koja podržava UTF-8 za linux.
Na žalost, navedena gospoda nisu u mogućnosti prodati desktop licencu za linux pod cijenom od 250 $, iako su isporučili metodu sa kojom je vrlo jednostavno upisati Licence Key i koristiti ga neovisno o tome da li je na serveru licencirana verzija ili ne.
Nakon što sam dobio lijepe pismene izraze sućuti od gospode iz dotične kompanije, zaputio sam se u mukotrpnu avanturu pronalaženja vlastitog rješenja, te ga na kraju i pronašao.
U slijedećih nekoliko rečenica pojasniti ću postupak kako koristeći besplatan PDFlib Lite dobiti hrvatske znakove, bez podrške za UTF-8. Datoteka će biti svega ~70-ak kb veća od one koja ne podržava domaći encoding.
Korak 1:
Nabavite verziju DOMPDF-a ( http://www.digitaljunkies.ca/dompdf/ ) i instalirajte slijedeći upute na stranici.
Korak 2:
Skinite klasu ConvertCharset sa http://mikolajj.republika.pl/ ili sa naših stranica.
Korak 3.
Html template koji punite podacima iz baze postavite na encoding windows-1250, bez BOM zaglavlja, te bez html definicije encodinga u headu dokumenta.
Korak 4.
Sve tablice i polja u bazi postavite na utf-8.
Korak 5:
Kod poziva DOMPDF-a postavite konverziju kao u primjeru:
$convertcharset = new ConvertCharset();
$html = $convertcharset->Convert($html, 'utf-8', 'windows-1250');
$dompdf->load_html($html);
Korak 6:
Napravite fontove za pdf kako je opisano na stranici DOMPDF-a. Ukoliko vam ne polazi za rukom možete ih skinuti sa naših stranica pod rubrikom 'skripte'. Također zamijenite i dvije konfiguracijske datoteke za fontove koje se nalaze u paketu.
Korak 7:
Uvjerite se da server na koji postavljate skripte podržava PHP 5 i PDFlib lite, poput ovog servera tvrtke PLUS ( www.plus.hr )
Ako ste sve napravili kako je navedeno, upravo ste dobili podršku za domaće znakove u PDF-u i uštedjeli sebi 995 $.