Generování PDF v PHP a UTF-8
(článek ze dne 13. 07. 2012)
Je váš web je zastaralý? Nezobrazuje se korektně v mobilu? Dost možná je čas na změnu.
Kompletní analýza SEO a přístupnosti, programování webů na platformě ProcessWire.
Zeptejte se, jak co nejefektivněji situaci napravit a držet krok s vývojem webových technologií.
Nejprve jsem vyzkoušel tu nejjednodušší třídu pro generování PDF a to FPDF a našel i pěkně udělaný doplněk na blogu MyEgo. Chvíli jsem si s originálním scriptem hrál a po několika neúspěšných pokusech korektně zobrazit češtinu načítanou z databíze v UTF-8, jsem hledal dál.
Alternativou, která sice je poněkud těžkotonážnější (základní soubor s třídou má přes 1MB), leč nakonec zafungovala, je TCPDF. V popisu tvrdí, že umí pracovat i s Unicode. Pokud se Vám to jako mě napoprvé nepovede, zkuste dřív než hledat problém jinde, využít jimi dodávané definice free fontů (freeserif, freesans,...). Pokud nestojíte o specifické písmo, už skoro dál hledat potíž netřeba. V ukázkách je defaultně použita Helvetica a ta mi s češtinou nefungovala. Ještě možná bude potřeba přepsat false na true u protected $isunicode = true; (je to na řádku 591 souboru tcpdf.php).
Existují i nadstavby nad oběma zmiňovanými třídami, které práci s ní prý usnadňují, ty jsem nezkoušel a dost možná mají i přísnější licenci - např. nadstavba mPDF má licenci GNU General Public License version 2, zatímco TCPDF má licenci 'version 3 of the GNU Lesser General Public License'. Rozdíl lze nastudovat zde: CS Wikipedia
Každopádně TCPDF funguje zdá se jak má, nemá problém načíst a převést do PDF i html, ba umí víc než mohu využít a tak považuji problém generování PDF za vyřešený (šlo mi triviálně o vytváření faktur v PDF z údajů načítaných z databáze).