TOP 5(+1) nyíltforrású PDF generátor könyvtár PHP nyelven

img

A PDF fájlok automatikus létrehozása az egyik legfontosabb eleme a webáruházaknak. Miért épp a webáruházakat hozom fel példaként? Mert ott tudom bemutatni a legéletszerűbb felhasználási módokat a PDF-ek generálására. Először is nézzünk pár példát, mire használható.

Mire használhatunk PDF-et egy webáruháznál?

Üzemeltetői oldalról az egyik legpraktikusabb felhasználási mód a rendelésösszesítő, a beérkezett termékeket, a vásárló adatait és vásárlás részleteit egy fejlécezett, esztétikus kinézetű PDF-be mentheted ki, melyet akár elküldhetsz a vásárlónak is.

Jelentéseket készíthetsz, árlistákat menthetsz ki, szállítólevelet generálhatsz, termékadatlapot teheted letölthetővé, díjbekérőt állíthatsz ki. A lehetőségek száma közel végtelen, mellyel a saját és a vásárlóid életét is könnyebbé teheted.

5. FPDF

Az FPDF egy PHP osztály, mellyel egyszerűen generálható PDF fájl PHP-ból. A fő előnye, hogy nincs szüksége külső bővítményekre (kivéve a Zlibet, ha engedélyezni akarod a tömörítést, és a GD-t a GIFek támogatásához), és már PHP 5.1-től futtatható. A nevében az F a FREE szóra utal, szóval szabadon felhasználható és módosítható az igényeidnek megfelelően.

Fő tulajdonságai:

  • Választható mértékegység, oldalformátum és margó
  • Fejléc és lábléc beállítás
  • Automatikus oldal törés
  • Automatikus sortörés és szöveg igazítás
  • Képek kezelése (JPG, GIF, PNG)
  • Színek használata
  • Linkek beágyazása
  • TrueType és Type1 fontok használata
  • Tömörítés

Az FPDF letölthető az fpdf.org oldalról.

4. mPDF

Az mPDF az FPDF-re, HTML2FPDF-re és az UPDF-re épül, kibővítve azok tudását. Az FPDF-hez képest a legnagyobb előnye, hogy támogatja az UTF-8 kódolású HTML-t. Használatához a PHP mbstring és gd bővítményeire van szükség, de kellhet a zlib a kimenet és a beágyazott fontok tömörítéséhez, a bcmath a vonalkódokhoz és az xml a karakterkódoláshoz és az SVG-k kezeléséhez.

Fő tulajdonságai:

  • Támogatja az UTF-8 kódolású HTML-t
  • Majdnem minden nyelvet támogat, beleértve az RTL (arab, héber) és a CJK (kínai, japán, koreai) nyelveket is
  • Könyvjelzők hozhatók létre
  • CSS stíluslapok használata
  • Egymásba ágyazható blokk elemek (P, DIV), margóval, kerettel, háttérszínnel, sormagassággal, stb.
  • Részlegesen támogatja a float és fixed blokk elemeket is
  • Beállítható az oldalformátum
  • Fejléc és lábléc kezelése
  • Oldalszámozás
  • Tartalomjegyzék
  • Vízjelek
  • Képek kezelése (JPG, GIF, PNG, SVG, BMP, WMF)
  • Vonalkódok (EAN13, UPC-A/E, Code 11, 39, 93, 128, MSI, IBM, Postnet, Planet, RM4SCC, stb.)
  • Másik PDF fájl használható sablonként

A legújabb mPDF leírása megtalálható az mpdf.github.io oldalon, a forráskód pedig a githubon érhető el. Javasolt Composerrel telepíteni, jelenleg támogatott PHP verzió >=5.6 és <7.3

3. DOMPDF

A DOMPDF kifejezetten HTML kódból PDF generálására használható. Közel teljesen támogatja a CSS 2.1 stílusokat, melyeket akár külső forrásból le is tud tölteni, használhatunk inline CSS-t és külön formázhatjuk a HTML elemeket a style attribútummal is. Használatához szükség lesz az mbstring bővítményre, a DOM bővítményre (mely be van építve PHP 5-től a PHP forrásába), emellett jól jöhet néhány font is, a PDF alapból támogatja a Helvetica, Times-Roman, Courier és Zapf-Dingbat fontokat, de saját betűtípusokat is telepíthetsz.

Fő tulajdonságai:

  • Kezeli a legtöbb CSS 2.1 és néhány CSS 3 tulajdonságot, beleértve az @import, @media és @page szabályokat is
  • Támogatja a legtöbb HTML 4.0 attríbútumot
  • Támogatja a külső CSS fájlok használatát, akár lokálisan vagy http/ftp kapcsolaton keresztül
  • Támogatja a komplex táblázatok használatát, beleértve a sor és oszlop összevonását és a különálló cellák formázását is
  • Képek kezelése (GIF, JPG, BMP, PNG (8, 24, 32 bit átlátszósággal)
  • Nincs szükség külső könyvtárakra, az R&OS PDF osztálynak köszönhetően
  • Támogatja az inline PHP kódot is

A DOMPDF leírása megtalálható a dompdf.github.io oldalon, a forráskód pedig a githubon érhető el. A futtatásához legalább PHP 5.4 szükséges.

2. Snappy

A Snappy egy PHP 5 könyvtár, mellyel előnézeti képet, képernyőképet vagy PDF-et hozhatunk létre külső URL-ből vagy HTML kódból. A webkit alapú wkhtmltopdf és wkhtmltoimage könyvtárakat használja, melyek elérhetők OSX-en, Windowson és Linuxon is. A wkhtmltopdf és wkhtmltoimage nyíltforrású parancssori eszközök, melyek segítségével HTML kódot tudsz konvertálni több különböző képformátumra a Qt WebKit motort használva. Ennek segítségével úgynevezett "headless" módban fut, így nincs szüksége semmilyen kimeneti eszközre, így monitorra sem, ezzel könnyen futtatható bármilyen konzolos környezetben.

Composer függőségként is telepíthető a wkhtmltopdf, így dinamikusan tudsz hivatkozni rá a projectekben.

A Snappy leírása és forráskódja megtalálható a githubon, a wkhtmltopdf és wkhtmltoimage "dokumentációja" a wkhtmltopdf.org oldalon és a forráskódja githubon.

1. TCPDF

A TCPDF talán az egyik legsokoldalúbb PHP alapú PDF generátor. Támogatja az Unicode fontokat, szerintem az egyik legjobban dokumentált könyvtár, rengeteg példával.

Fő tulajdonságai:

  • Nem kellenek külső könyvtárak az alap funkciók használatához
  • Támogatja a szokványos oldalformátumokat
  • Egyedi margók és mértékegységek használhatók
  • UTF-8 karakterkódolás támogatása
  • Használhatók TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 és CID-0 fontok
  • Natívan támogatja a JPG, PNG és SVG képek beillesztését, a GD által támogatott képeket (GD, GD2, GD2PART, JPG, GIF, PNG, BMP, XBM, XPM) és az ImageMagick által támogatott képeket is.
  • 1D és 2D vonalkódok: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417.
  • Automatikusan kezeli a fejlécet és láblécet
  • Automatikus sortörés, oldaltörés, szövegigazítás
  • Automatikus oldalszámozás
  • Oldalak áthelyezése és törlése
  • Tömörített kimenet (zlib bővítménnyel)
  • Dokumentum titkosítás (256 bitig) és digitális aláírás
  • Írásvédett területek létrehozása az oldalon belül
  • Rétegek kezelése
  • Több oszlopos mód
  • Könyvjelzők, tartalomjegyzék

És még sok más. A TCPDF dokumentációja és a mintakódok megtalálható a tcpdf.org oldalon és a forráskód githubon

A TCPDF-et tettem az első helyre, mert szerintem könnyen kezelhető és testreszabható. Az első helyet szívem szerint a Snappynek adnám a wkhtmltopdf miatt, de objektíven nézve, nem mindenkinek van lehetősége, hogy bármit is telepítsen a szerverre vagy tárhelyre, amit használ. Emiatt kapta az első helyet a TCPDF, csak include-olod és használod.

Természetesen az erőforrásigénye is a TCPDF-nek a legnagyobb, mivel minden folyamatot PHP-ban oldottak meg, emiatt nincs szüksége külső könyvtárakra vagy alkalmazásokra. A legtöbb feladatot, mely PDF generálást igényel a projectedben, el fogja látni.

+1 GrabzIt

Ha nem akarsz sokat szenvedni, akkor használhatsz erre online eszközöket is, ilyen például a GrabzIt, ami egy API-n keresztül legenerálja neked a PDF-et. Természetesen a legtöbb ilyen eszköz fizetős, de megmenthet egy kis kódolástól. Ezt a lehetőséget csak azért ajánlom, mert tudom, hogy vannak, akik a könnyebb utat választják. A csomagokat itt találod a funkciókkal és korlátozásokkal együtt. Az API használatát pedig itt és itt tudod megnézni.