Jakiś czas temu poproszono mnie o stworzenie w php skryptu, który będzie generował pliki pdf w określonym formacie. Zetknęłam się już wcześniej z tym zagadnieniem, ale były to wtedy bardzo nieskomplikowane pliki i nie za bardzo było o czym pisać. Szczególnie, że wszystko co potrzebowałam to klasa FPDF i przykłady znajdujące się w jej dokumentacji.
Tym razem szybko się okazało, że dość stara i nierozwijana klasa FPDF nie wystarczy, żeby osiągnąć to czego ode mnie wymagano. Tradycyjnie zrobiłam casting i spośród różnej maści narzędzi wybrałam następcę FPDF czyli TCPDF. To klasa dla odmiany nieco nadmiernie, jak na mój gust rozbudowana, ale za to miała wszystko czego mi było potrzeba.
Jakoś nie zachwyciło mnie ani mPDF ani biblioteka HTML2BDF czy DOMpdf, ani nawet narzędzia, które przetwarzają xml na pdf. Wspominam o nich dla porządku, może znajdzie się ktoś, kto wybierze któreś z nich oraz dlatego, że nie podjęłam decyzji ad hoc tylko po dokładnym zbadaniu dostępnych opcji.
Zatem, o ile czas pozwoli niedługo pojawią się artykuły w których opisywać będę zadania jakie przede mną stawały i sposoby na ich rozwiązanie. Nie będę pisac o takich oczywistych i podstawowych sprawach o których można sobie przeczytać w dokumentacji, więc jeśli ktoś nie używał wcześniej ani FPDF ani TCPDF powinien zacząć od zapoznania się z przykładami zanim przejdzie do dalszej lektury.
A ja bym to zrobił dość przekornie i walnął exec do PrinceXML ;)
No ciekawa propozycja. Zatem zróbmy tak. W miarę jak będę dodawać kolejne wpisy w tej serii Ty będziesz pokazywać jak to zrobić w PrinceXML, dobrze?
tzn tam za bardzo nie ma co pokazywać. Wystarczy przygotować odpowiedni szablon HTML z CSS, w PHP zmienić jego treść i przepuścić przez ten program.
No to zobaczymy czy za bardzo niema co pokazywać :P
Korzystałem z masy klas odpowiedzialnych za generowanie PDF’ów. Najlepsze rozwiązanie wg mnie to: skrypt konsolowy wkhtmltopdf (zamienia html na pdf’a – zupełnie jak google chrome, korzysta z webkit’a – dokladnie taki same efekt otrzymamy ‘drukujac strone jako php’ w chromie).
Zdecydowanie polecam, nie spotkalem się z jakimiś zanczącymi problemami, dużo latwiej się pracuje nad takim dokumentem – generujemy html, dopiero potem PDF’a. Jest to bardzo proste, i nawet generuje pdf’owa nawigacje. Co prawda wymaga zainstalowania binarki na serwerze (ale wiekszość osób nie powinno miec problemów) w razie kompletnego braku możliwości można generować pdf’ów z ‘innego serwera’ (wystarczy wyslac mu URL z jakiego ma zrobic).
Strona projektu:
http://code.google.com/p/wkhtmltopdf/wiki/IntegrationWithPhp
No nie wiem, nie wiem. Ciągle nie jestem przekonana, czy taki skrypt poradziłby sobie z wygenerowaniem katalogu zawierającego blisko 2000 stron.
Nie polecam tej klasy, jeśli trzeba zapanować nad łamaniem tekstu w linii zamkniętej w obrysie. Znacznie lepiej sprawuje się mpdf -używam go do generowania faktur.
Będę pamiętac jak mi się przyjdzie w najbliższym czasie zmierzyć z tworzeniem pdfów