Sütik

Sütiket használunk a tartalom személyre szabására és a forgalom elemzésére. Kérjük, határozza meg, hogy hajlandó-e elfogadni weboldalunkon a sütiket.

Oldal tetejére
Bezárás
Zengo - NKFIA pályázat Zengo - Széchenyi2020
Zengo - Dompdf vagy pdf.js formátum jobb a PDF generáláshoz? Segítünk a döntésben!
Kategória:

Dompdf vagy pdf.js formátum jobb a PDF generáláshoz? Segítünk a döntésben!

Zengo - óra4 perc olvasási idő
2022. 03. 02.

A dokumentumok továbbításában a PDF fájlok központi szerepűek, ezeket viszont az idő előrehaladtával szabványosították. Ez biztosítja formátumuk megtartását más platformokon és nyomtatott verzióban is. A PDF fájlok generálása elengedhetetlen és fontos eleme egy web alkalmazásnak vagy bármilyen rendszernek. Manapság már minden szisztémában megtalálhatók a megfelelő felületek és funkciók ehhez, amik mind a felhasználó kényelmét szolgálják.

Mire használható a PDF generálás?

Felhasználói oldalról ez egy nagyon hasznos és fontos feature, hiszen ezzel exportálhatjuk a beérkezett rendeléseket, adatokat egy felhasználóról vagy az információkat egy-egy bejegyzésről, amit akár esztétikus formában tovább is küldhetünk egy-egy ügyfélnek. A lehetőségek száma közel végtelen, ezzel pedig a felhasználók életét könnyítjük meg.

Mikor melyiket válasszuk?

Mindig az adott probléma határozza meg, pontosan melyik módszert célszerű választanunk PDF generálására, illetve ehhez melyik lib-et érdemes használnunk. Ismernünk kell, hogy mennyire szükséges design elemeket használni a PDF-ben, feladatunk-e tárolni a fájlt a szerveren, éppen milyen szerveres környezet érhető el és milyen megkötések vannak az adott állományra vonatkozólag.

Számos megoldás áll rendelkezésünkre, viszont mindegyiknek más előnyei és hátrányai vannak. Nézzük is meg ezeket!

Milyen alternatívák állnak rendelkezésre?

Backend oldalról (Laravel/PHP) is több alternatíva érhető el a PDF generálására. Laravelben a legtöbbet használt a DOMPDF, mert ehhez készült egy külön Laravel-es csomag, amely gyorsan és egyszerűen telepíthető. Ezen felül persze további alternatívák közül választhatunk:

Javascript oldalról is sok különböző lib létezik, ezek közül az általunk előszeretettel használt a print.js, de más megoldások is használatra készek:

100%

DOMPDF

A dompdf lib segítségével szerver oldalon generálhatunk PDF fájlokat, amihez akár egy html template-et is felhasználhatunk.

Előnyök
  • Az elkészült PDF fájl szerver oldalon generálódik, így tudjuk ott tárolni. Ez az egyik legnagyobb előnye a kliens (frontend) oldali generálással szemben.
  • Jól kezeli az oldaltöréseket, a táblázatokat leszámítva (lsd: hátrányok).
Hátrányok
  • Szerver oldali függőségei vannak, így nem minden környezetben érhető el (php-font-lib, php mbstring extension, php dom extension).
  • Nem tud minden html és css szabályt feldolgozni és megfelelően megjeleníteni, vannak bizonyos config beállítások (html5 parser), aminek engedélyezésével több html szabályt tud renderelni.
  • Nem tud táblázatot több oldalra törni, tehát a soroknak el kell férnie egy oldalon.
pdf.js

A pdf.js egy Javascript alapú lib, ahol kliens oldalon tudjuk a PDF dokumentumot generálni.

Előnyök
  • Szinte bármilyen design (html, css) elemet tudunk használni és azok mind megfelelően fognak megjelenni. Ez az egyik legnagyobb előnye bármely szerver (backend) oldali PDF generálással szemben.
  • Tud json adatstruktúrát fogadni, ahol képes a kulcs-érték párokból automatikusan táblázatot generálni, amit bizonyos mértékben formázhatunk is.
Hátrányok
  • Ez esetben a kliens oldali generálásból adódóan nem tudjuk szerver oldalon tárolni az elkészült állományt.
  • A generálás sebességét a kliens oldali gép teljesítménye határozza meg.
  • Nem konkrét PDF-et kapunk, hanem egy nyomtatási képet, amit tudunk PDF-be menteni, vagy nyomtatni.
  • Az oldaltöréseket nem tudjuk megfelelően kezelni a tartalomhoz mérten.
  • Internet Explorer alatt nem működik a generálás.
Így használd őket

Hasonlóan a többi PHP-hez és Laravelhez elérhető csomagokhoz, a Laravel dompdf is feltelepíthető egy composer dependency-ként, aminek csak a service provider-ét kell a Laravel konfigban regisztrálni. Így a csomag által biztosított függvények elérhetőek lesznek a projektben.

A print.js is egyszerűen beüzemelhető a többi frontend csomaghoz hasonlóan: npm dependency-ként használható, ahol telepítés után a Javascript oldalon elérhetővé válnak a print.js által nyújtott függvények. Biztosíthatunk könnyű átjárhatóságot a szerver és a kliens oldali generálás között, ha backendről egy renderelt html-t adunk vissza és a rendszer azt kapja meg paraméterként.

Bármelyiket is választod, először győződj meg róla, mely szempontok fontosak számodra a PDF generálásnál!