wtorek, 8 września 2009

HTML do PDF - generacja

Wstęp:
Dużo czasu upłyneło odkąd ostatni raz pisałem - nowe projekty = brak czasu.

Do generecji seryjnej poczty(maile, faxy,sms) uzywam smarty.
Najczesciej wyglada to tak, że istnieja 3 warstwy programu:
  • template - w smarty wykonana warstwa prezentacji, caly kod html jest tutaj, dodatkowo dochodzą style CSS (osobny dla drukowania)
  • data-logic layer - tutaj obliczam wszystkei zmienne ktore później wołam w smartym
  • data-aquisition - warstwa czytajaca config polaczenia z bazą, pobierajaca wszystkie dane.

Problem jest gdy chcemy wysylać faxy z systemu korespondencyjnego(mailer).
Otóż każdy fax winien być plikiem *.pdf, ew. plikiem graficznym
-przy czym generacja pdf z HTML jest szybsza niż plików graficznych,
-i wymaga mniejszego transferu.

Rozwiązanie:
Z pośród kilku testowanych(ok5) klas najszybszy okazał się HTML2PDF.
Najlepszy stosunek możliwosci/szybkosc miał mPDF.
Plusy:
  • zero problemów z polskimi ogonkami
  • obsługa zewnętrznych styli css, mozliwosc podmiany HEADA
  • obsługa stopki footera
Oto jak prosto go użyć:

$mpdf=new mPDF('iso-8859-2'); //use polish fonts
$mpdf->charset_in='windows-1250'; //polish fonts - skip if u use linux serw
$stylesheet = file_get_contents("./INCLUDES/styl.css"); //import external styleshet
$mpdf->WriteHTML($stylesheet,1); //swap external stylesheet
$mpdf->WriteHTML($html,2); //$html - contains generated HTML page via Smarty
$mpdf->Output('test1.pdf',F); //output a disk file


wynik przykladowej templatki:


1 komentarz: