Generátor PDF

Tento článek (nebo jeho část) je převzat z externího zdroje. Je tedy slušností jej uvést včetně případného autora.

mPDF je generátor napsaný v PHP pro tvorbu PDF dokumentů z HTML a CSS. Proto je tvorba velmi jednoduchá a rychlá. Ukážeme si jednoduché použití, které jsem využil pro tvorbu poukazů.

Formát PDF je snad dostatečně známý všem. Je to zkratka Portable document format, vyvinuto společností Adobe. Cílem bylo, aby se na všech zařízeních a platformách zobrazil stejně.

mPDF, tcPDF, fPDF…

Knihoven pro tvorbu PDF dokumentů v PHP je mnoho. Osobně jsem zadal do Google dotaz best PHP PDF generator a hned první odkaz vedl na StackOverflow. Tehdy jsem se rozhodl pro mPDF také pro plnou podporu UTF8 a zůstal u něj. Existují i integrace do Laravelu, použito také při psaní pluginů do WordPressu a dalších.

Článek je kompletně přepsán k 29.9.2019, protože v knihovně byly provedeny velké změny. Migrace u základních řešení je ale velmi jednoduchá.

Jak na to s mPDF

Původní článek popisoval použití knihovny ve verzi 4 a 5. Knihovnu lze od verze 6.1 oficiálně instalovat pomocí composeru. Dále od verze 7 již není možné optimalizovat spouštěcí skript, protože knihovna používá autoload a byla přepracována do namespaců.

Knihovna je v době psaní článku ve verzi 8 a využívá sémantické verzování. Takže i drobné změny zvyšují majoritní verzi. Základní užití je tak mezi verzí 7 a 8 naprosto totožné.

Tvorba z HTML a CSS

Jak je zmíněno na začátku, vstupem do mPDF je HTML a CSS na základě kterého je vygenerováno výsledné PDF. V příkladu níže je CSS vloženo přímo do do <head>, ale je možné vložit i odkaz na externí CSS soubor.

 

A PHP kód

Nastavení je samozřejmě mnoho a dokumentace je popsána velmi kvalitně. Výsledkem je vytvořený PDF soubor. Šablona výše byla použita pro generování vánočních poukazů na webu SkiBílá a vzorový výsledek si lze prohlédnout jak jinak než v PDF formátu. V jiných systémech ale používám také pro generování různých potvrzení a smluv.

Vlastní fonty

Zajímavé a někdy nutné může být přidávání do generovaných PDF souborů vlastní písma. Již není nutné upravovat zdrojové soubory jako v případě verze <7. Vše jde nastavit přes konstruktor. Je ale potřeba prvně získat výchozí hodnoty a ty poté doplnit, jinak dojde k jejich přepsání.

Co ještě mPDF umí

  • Kreslit čárové kódy – od verze 8 je generování QR kódů odděleno do balíčku mpdf/qrcode
  • Některé CSS3 vlastnosti jako jsou kulaté rohy, přechody apod.
  • Automatické generování čísel stránke do záhlaví či zápatí
  • Záložky, vodoznaky, zaheslovat dokument
  • Mnoho dalšího pod záložkou What else I can do.