Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PHP] - Generowanie pdf z formularza html

danon198901 30 Lip 2012 14:39 6901 18
  • #1 30 Lip 2012 14:39
    danon198901
    Poziom 11  

    Witam,
    mam pytanie odnośnie generowanie pliku *.pdf z formularza html. Sprawa ma się następująco. Formularz zawiera wszystkie informacje, które mają być zawarte w pliku pdf oczywiście odpowiednio sformatowane. Przy wpisywaniu np. nazwiska mam opcję wyboru czcionki, czy też nadanie tła dla dokumentu, dlatego interesuje mnie najłatwiejszy sposób wygenerowania pliku *.pdf, a zarazem taki, który udostępni mi formatowanie dokumentu w taki sposób w jaki użytkownik wyklika sobie na formularzu.

    Czytałem, że można generować pliki pdf w PHP na różne sposoby, np. zrobić szablon pdf w Acrobat Reader lub skorzystać z biblioteki PDFlib. Ale czy dadzą mi one możliwości wyżej wspomnianego formatowania dokumentu (czyli pobrania informacji z formularza i odpowiedniego przetworzenia ich)? Czy może znacie jakieś inne metody na szybkie uzyskanie wyników?

    Liczę na jakieś sugestie:)

    POZDRAWIAM

    0 18
  • #2 30 Lip 2012 15:51
    arnoldziq
    Moderator Programowanie

    Tutaj znajdziesz wszystkie interesujące Cię informacje : PHP PDF.

    0
  • #3 31 Lip 2012 11:47
    matmateusz
    Poziom 11  

    Kiedyś korzystałem z biblioteki FPDF -> dawała radę.

    0
  • #4 13 Sie 2012 22:59
    danon198901
    Poziom 11  

    odświeżę nieco temat, bo dopiero teraz znalazłem czas na zajęcie się tym problemem.

    Mam problem z zainstalowaniem PDFLib u siebie. Najpierw wrzucić trzeba wersje lite którą pobrałem czy może PECL package? Bo na pierwszy rzut oka nie mam pojęcia od której strony to zrobić.
    Dodam jeszcze, że korzystam z Win7 64bit i WebServ 2.0 (aczkolwiek chyba przerzucę się na Vertigo).



    --@EDIT--
    Na innym forum dostałem informacje, że PDFlib nie zainstaluję na Windowsie, czy to prawda?!

    0
  • Pomocny post
    #5 15 Sie 2012 14:52
    arnoldziq
    Moderator Programowanie

    Nie, to nie jest prawda.
    Ja go mam w standardzie wraz z XAMPP :
    [PHP] - Generowanie pdf z formularza html
    Tutaj jest dokładny opis, krok, po kroku, co trzeba zrobić, żeby zainstalować odpowiedni DLL, jeżeli nie posiadasz go w systemie: Link.
    Ale najczęściej jest on po prostu wyłączony w pliku PHP.INI.

    0
  • #6 15 Sie 2012 17:52
    danon198901
    Poziom 11  

    W standardzie? To znaczy, że PDFlib jest wkomponowany w XAMPP'a?
    No, bo to by rozwiązało mój problem z instalacją. Sam poszukałem na google i z tego co znalazłem XAMPP 1.7.7 posiada:

    Cytat:
    • FPDF 1.


    Zainstalowałem XAMPP i pojawił się problem otóż nie przetwarza mi kodu PHP. Poniżej przykład:
    http://zapodaj.net/fe02ca437375.png.html

    Wcześniej miałem WebServ 2.0 i aby działały mi strony oparte o PHP musiałem wrzucić je do odpowiedniego folderu (httpd). W XAMPP trzeba też do odpowiedniego folderu wrzucić pliki? Czy może dodatkowo trzeba coś uruchomić (standardowo moduły mam uruchomione -> Apache+MySql+FileZilla). Czy może problemem jest mój system operacyjny, bo korzystam z WIN7 64-bit, a z tego co zobaczyłem jest dedykowany pod 32-bit:(


    Ponadto idąc tropem linka, który podałeś @arnoldziq php_pdf.dll jest pod PHP 5.x. Czyli na działającym mi jedynym programie (WebServ2.0) zaopatrzonym w PHP 4.4.7 ta dll'ka mi nie będzie działała?


    --EDIT--
    Po wrzuceniu przykładowych plików do htdocs w folderze xampp i uruchomieniu skrypty moim oczom ukazuje się
    [PHP] - Generowanie pdf z formularza html

    --EDIT2--
    Odinstalowałem xampp'a i wrzuciłem Vertigo...problem taki sam:( Załamuję już ręce...

    0
  • #7 16 Sie 2012 10:34
    arnoldziq
    Moderator Programowanie

    1. Tak, XAMPP ma wbudowaną i uruchomioną tę bibliotekę.
    2. W katalogu instalacyjnym XAMPP jest folder htdocs, to jest główny katalog Twojej strony.
    3. Jeżeli nie działa Ci jakiś skrypt, to musisz zamieścić go, żeby ustalić co jest z nim "nie tak". Nikt nie jest w stanie ustalić, na czym polega błąd, na podstawie pokazywanych błędów. Na tej podstawie można tylko z grubsza ustalić gdzie błąd się znajduje.


    @Autor : Proszę umieszczać wszelkie listingi i/lub obrazki w poście na nie na zewnętrznych serwerach.
    W tej formie, post łamie regulamin. Proszę to poprawić.

    0
  • Pomocny post
    #8 16 Sie 2012 10:47
    marcinj12
    Poziom 40  

    Ten Twój problem wynika ze źle napisanego kodu PHP. To, co dostajesz, to ostrzeżenia, nie są krytyczne dla działania aplikacji, ale warto je poprawić.
    W komunikatach masz podaną nazwę pliku oraz linijkę, gdzie jest błąd. Z tego co widzę to odwołujesz się do niezdefiniowanych zmiennych, których nazwy też masz podane.

    W tym kodzie z załącznika nie widać miejsca, gdzie przypisujesz wartości do zmiennych (bo gdzieś je przypisujesz, prawda?). Jeżeli masz coś takiego:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    zamień na:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    albo tak popraw kod, żeby nic nie wyświetlał, kiedy zmienne nie są zainicjowane.

    0
  • #9 16 Sie 2012 14:58
    danon198901
    Poziom 11  

    arnoldziq napisał:
    1. Tak, XAMPP ma wbudowaną i uruchomioną tę bibliotekę.
    2. W katalogu instalacyjnym XAMPP jest folder htdocs, to jest główny katalog Twojej strony.
    3. Jeżeli nie działa Ci jakiś skrypt, to musisz zamieścić go, żeby ustalić co jest z nim "nie tak". Nikt nie jest w stanie ustalić, na czym polega błąd, na podstawie pokazywanych błędów. Na tej podstawie można tylko z grubsza ustalić gdzie błąd się znajduje.


    1. Hmm...Xampp 1.7.7 posiada FPDF 1, przynajmniej tylko to jest wyszczególnione. Ale skoro mówisz @arnoldziq, że tam jest to tak musi być:) No chyba, że posiadasz inną wersję xampp'a.
    2. Też do tego doszedłem, bo tylko w tym katalogu "próbowało" odczytać skrypt php:)
    3. Przykład który zamieściłem jest z książki na podstawie której uczę się w dalszym ciągu PHP/MySql itp.
    Wygląda on następująco:

    KOD HTML
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    KOD PHP
    Kod: php
    Zaloguj się, aby zobaczyć kod


    arnoldziq napisał:

    @Autor : Proszę umieszczać wszelkie listingi i/lub obrazki w poście na nie na zewnętrznych serwerach.
    W tej formie, post łamie regulamin. Proszę to poprawić.


    Przepraszam za wpadkę. Już poprawione.


    marcinj12 napisał:
    Ten Twój problem wynika ze źle napisanego kodu PHP. To, co dostajesz, to ostrzeżenia, nie są krytyczne dla działania aplikacji, ale warto je poprawić.


    Co chciałbym zaznaczyć to to, że na Vertigo/Xampp skrypty mi nie działają, a o dziwo na WebServ'ie tak. Doszedłem do wniosku, że to prawdopodobnie wina wersji PHP, bowiem Vertigo posiada PHP 5.3.14, a Xampp PHP 5.2.1.
    Na WebServ miałem PHP 4.4.4 i to na podstawie PHP v4 pisana była książka z której się uczę. Nie wiem jakie zmiany zostały wprowadzone w PHP v5 względem poprzedniej wersji, ale może tu jest przyczyna niedziałających skryptów??

    0
  • Pomocny post
    #10 16 Sie 2012 15:04
    arnoldziq
    Moderator Programowanie

    Śmiem wątpić, czy ten skrypt PHP kiedykolwiek działał.
    Nie ma w nim nawet słowa o przekazaniu informacji z formularza HTML do skryptu. Brakuje tam kilku komend typu :

    Kod: php
    Zaloguj się, aby zobaczyć kod

    Stad te błędy, które się pokazują.

    0
  • #11 16 Sie 2012 15:32
    danon198901
    Poziom 11  

    arnoldziq napisał:
    Śmiem wątpić, czy ten skrypt PHP kiedykolwiek działał.
    Nie ma w nim nawet słowa o przekazaniu informacji z formularza HTML do skryptu. Brakuje tam kilku komend typu :
    Kod: php
    Zaloguj się, aby zobaczyć kod

    Stad te błędy, które się pokazują.



    Korzystam z książki http://helion.pl/ksiazki/php-i-mysql-tworzenie-stron-www-vademecum-profesjonalisty-wydanie-czwarte-luke-welling-laura-thomson,phms4v.htm i z płyty zamieszczonej w tej książce zamieściłem ten przykład. Poniżej screenshot z WebServ2.0

    [PHP] - Generowanie pdf z formularza html

    Jak widać skrypt działa:)

    Czy informacje nie są czasem przekazywane poprzez? :
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    W takim razie poprawię kod i zainstaluję xamppa skoro ma wbudowaną lib.
    Wieczorem dam znać czy problem rozwiązany:)

    0
  • Pomocny post
    #12 16 Sie 2012 15:34
    marcinj12
    Poziom 40  

    danon198901 napisał:
    Doszedłem do wniosku, że to prawdopodobnie wina wersji PHP, bowiem Vertigo posiada PHP 5.3.14, a Xampp PHP 5.2.1.
    Prędzej na tamtym serwerze miałeś (domyślnie lub celowo) wyłączone raportowanie błędów / wyświetlanie ostrzeżeń. Tak się zwykle robi w środowiskach produkcyjnych. W XAMPPie pewnie jest to domyślnie włączone, trzeba by w pliku konfiguracyjnym popatrzeć.
    Niemniej to tylko przykrywanie błędów która, jak zauważył arnoldziq są tam od samego początku - w kodzie który wkleiłeś nigdzie nie przypisujesz wartości do zmiennych $iloscopon, $iloscoleju czy $iloscswiec - czy kiedykolwiek Ci się tam wyświetliły inne wartości niż zero (edit: widzę screen i nie wierzę ;P, jeśli tak się dzieje, to muszą być jakieś sztuczki tego WebServera. PHP nie zachowuje wartości zmiennych przy przejściach pomiędzy stronami.)

    0
  • Pomocny post
    #13 16 Sie 2012 15:38
    arnoldziq
    Moderator Programowanie

    marcinj12 napisał:
    PHP nie zachowuje wartości zmiennych przy przejściach pomiędzy stronami.

    Ba ! One jeszcze nawet nie stały się zmiennymi PHP.

    0
  • Pomocny post
    #14 16 Sie 2012 16:15
    marcinj12
    Poziom 40  

    Powiem tak - po mojemu w kodzie PHP brakuje podobnego do tego fragmentu, umieszczonego np. zaraz początkowym znaczniku php:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    Albo będzie to wspomniane gdzieś w dalszej części kursu, albo autor zapomniał o tym, albo "profesjonaliści" robią to jakoś inaczej ;PPP

    Fragment
    Kod: php
    Zaloguj się, aby zobaczyć kod
    owszem, przekazuje te dane, ale trzeba je jeszcze odebrać z tablicy $_POST, jak w przykładzie powyżej...

    0
  • #15 16 Sie 2012 20:52
    danon198901
    Poziom 11  

    Super!! Dzięki za pomoc Panowie :D Faktycznie brakowało tych 3 linijek kodu i stąd te błędy.

    arnoldziq napisał:
    Nie, to nie jest prawda.
    Ja go mam w standardzie wraz z XAMPP :
    [PHP] - Generowanie pdf z formularza html


    Sprawdziłem w komponentach i w XAMPP jest FPDF Class. PDFlib brakuje jednak. Z jakiej wersji xampp'a korzystasz @arnoldziq? Być może pozostanę przy FPDF, bo po opisie na localhost widzę, że ma całkiem ciekawe możliwości, ale jeśli jest to kwestia wersji xampp'a to przynajmniej będę wiedział na przyszłość i nie trzeba będzie odświeżać tematu:)



    W między czasie chciałem zobaczyć czy FPDF zadziała. Z tutorialu wbudowanego w xampp skopiowałem przykład:
    Kod: php
    Zaloguj się, aby zobaczyć kod


    i zapisałem jako plik *.php Dostałem następującą wiadomość:
    [PHP] - Generowanie pdf z formularza html

    Tę bibliotekę trzeba ręcznie uruchomić gdzieś? w phpinfo() brakuje mi tej sekcji pdf jak u Ciebie @arnoldziq.

    0
  • #16 17 Sie 2012 10:28
    arnoldziq
    Moderator Programowanie

    Skoro masz XAMPP, to podejrzewam, że masz także ZEND framework.
    Odpal u siebie na komputerze taki kod :

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #17 17 Sie 2012 10:58
    danon198901
    Poziom 11  

    po uruchomieniu powyższego kodu dostaję podobną wiadomość co wcześniej:

    [PHP] - Generowanie pdf z formularza html


    Czy ZEND i PDF nie powinny być wyszczególnione w phpinfo()? Bo w screenshoot'cie który wcześniej podałeś @arnoldziq masz właśnie sekcję PDF, a ja jej nie mam.

    [PHP] - Generowanie pdf z formularza html

    0
  • Pomocny post
    #18 17 Sie 2012 11:10
    arnoldziq
    Moderator Programowanie

    W mojej wersji XAMPP-a, fpdf jest "ukryty" w pod-katalogu.
    Ale po drobnych modyfikacjach, bez problemu działa taki kod :

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Wejdź w katalog "PHP/PEAR" i podaj listę plików i katalogów, które tam masz.

    0
  • #19 17 Sie 2012 11:37
    danon198901
    Poziom 11  

    No i tu był pies pogrzebany :D Trzeba było podać podkatalog fpdf do ścieżki.
    Dzięki wielki za pomoc i cierpliwość:)

    0