Tutorial – PDF-Dokumente mit PHP erzeugen

Hab nochmal ein Tutorial zu schreiben probiert. Diesmal geht’s um die Erzeugung von PDF-Dokumenten.

Das soll alles dynamisch zur Laufzeit passieren, also sozusagen, Websitebesucher gibt irgendwas auf der Website ein, daraus wird eine PDF-Datei erzeugt.

zum Tutorial

29 Gedanken zu “Tutorial – PDF-Dokumente mit PHP erzeugen

  1. Hallo Thomas,
    vielen Dank für die gute und einfache Erklärung. Du schriebst, dass man hier fragen soll, wenn Fragen sein sollten.
    Hier nun meine Frage:
    Ja, ich habe alles prima installiert bekommen, doch könnte ich auch einfach meine ganze Seite als pdf generieren lassen?
    Bisher wird ja kein html geparsed. ;-(

    Hier einmal mein bisheriger Arbeitsstand:

    http://idealseiten.de/testseite01_fuer_altes_php.html

    Vielen Dank für Deine Zeit!

    Gruß philosapiens

  2. Meinst du eine Webseite als PDF generieren?
    Das Aussehen des PDFs muss ja von Hand in php geschrieben werden, dann können mit php sämtliche Werte in die “Platzhalter” des PDFs übernommen werden.
    Also eignet sich die ganze Sache eher für Vorlagen, die dann oft benutzt werden.

    Schade dass ich im Moment wenig Zeit hab, ich wollte eigentlich hier noch richtige Beispiele beschreiben. Aber früher oder später mach ich das noch. Ich hab natürlich schon mehr Antrieb, wenn hier mal jemand fragt, so wie du ;-)

  3. Hallo Thomas,

    schade, so ähnlich habe ich mir das schon gedacht. :-(

    Doch würde mich momentan eher die Möglichkeit interessieren, wie man alle Seiten als pdf darstellen könnte. So wie beispielsweise hier:

    http://www.vs-weissensberg.de/index.php?option=com_content&task=view&id=73&Itemid=66

    Klick man dort auf den Button für pdf, gelangt man zu folgender Seite:

    http://www.vs-weissensberg.de/index2.php?option=com_content&do_pdf=1&id=73

    Das wird aber wohl nicht so einfach mit FPDF zu machen sein. Oder? :-]

    Aber eigentlich wollte ich hier nicht Deinen schönen Blog durch meine Kommentare zu einem Forum verkommen lassen. Wenn Du möchtest frage ich auch gerne auf einer anderen Plattform weiter.

    Gruß philosapiens

  4. Vielleicht nützt dir HTML2PDF etwas. Hab ich aber noch nich probiert. Hab auch gehört, dass das eher für kleine Sache ist, aber für dein Vorhaben könnte es vielleicht ausreichen.
    Vielleicht ist das auch noch hilfreich: http://www.issociate.de/board/post/279266/html2pdf_mit_FPDF.html
    Falls du es dir mal anguckst, kannste ja dann mal ne Rückmeldung geben, ob das Tool okay ist ;-)

    … achso, und du “müllst” doch nich das Blog hier voll… ich bin froh, wenn mal einer was schreibt ;-)

  5. Hallo Thomas,

    also bisher habe ich in frei erhältlichen Versionen immer nur Möglichkeiten gefunden, die FPDF sehr ähneln. Alles was CSS versteht ist meistens kommerziell oder nur rudimentär. Es gibt wohl für Typo3 ein ganz gutes Extension mit dem Namen pdfgenerator2. Wie und ob das funktioniert kann ich auch nicht schreiben, da ich ja kein Typo3 nutze.

    Was ich jedoch als wirklich schöne Umsetzung bisher fand sind Services mit diesem Thema:

    http://html2pdf.seven49.net/Web/

    oder

    http://www.htm2pdf.co.uk/default.aspx

    Ob man soetwas auch als freeware irgendwo her bekäme um so seine Seiten generieren zu lassen? Mal sehen, was man noch so ausgooglen kann?.

    Wir lesen uns!

    philosapiens

  6. Wollte ich eigentlich machen, es hatte nur keiner gefragt. Das sollte auch ein mehrteiliges Tutorial werden. Ich hatte es sogar schon auf drweb.de veröffentlicht.
    Jetz hab ich grad bissel viel um die Ohren, aber ich werd mich bald mal dranmachen (kannst ja schonmal bissel “die Werbetrommel rühren”) ;-).

  7. Hallo Thomas,

    es freut mich sehr zu lesen, dass man bald Dein Code zum “Abkucken” lesen darf. ;-)

    Wenn ich mir etwas wünschen dürfte, dann würde ich mich sehr freuen, wenn man den Quelltext einer aktuellen Seite via php auslesen könnte und diesen dann mit dem entsprechenden CSS und HTML in das PDF interpretiert bekäme.
    Ja ich weiß, die beiden Dienste, aus meinem 6. Kommentar machen dass sicher auch nicht ohne Grund nur gegen bares aus Paypales. Sicherlich stellt diese dann noch zu erstellende Datei fast eine eigene Klasse dar. Wenn Du möchtest, dann würde ich Dir bei der Umsetzung dieser Idee auch gerne ein wenig Schreibarbeit abnehmen. Den Code könntest Du auch komplett unter Deinem (c) veröffentlichen.

    Mit der Werbetrommel scheint es da leider etwas schwieriger. ;-(
    Doch wenn Du möchtest könnten wir ja versuchen, wenn das ganze tatsächlich realisierbar wäre, daraus auch noch ein Addon für das phpkit zu machen. Da bin ich bei zwei recht großen Foren “Mitbastler”.
    http://www.kit-ressource.de/
    http://www.kitnetwork.de/

    Wenn Du mal wieder von Langeweile geplagt werden solltest (was ich Dir als Selbstständigen unter gar keinen Umständen wünsche), dann könnten wir das ja mal angehen. Oder?

    Wir lesen uns!

    philosapiens

  8. Ja, Lust hätt ich dafür zweifellos, aber ich sag mal so bis Ende April geht da gar nix im Moment.
    Schau mer einfach mal ;-).

    Aber das mit der PDF-Rechnung werd ich mal mit machen weil ich das sowieso eigentlich vorhatte.

  9. Ja, die Links kannte ich. Gerade an der Doku zu FPDF kann man sehen, dass das gar nicht so schwer ist, ziemlich übersichtlich eben.
    Der zweite Teil des Tutorials mit der PDF-Rechnung kommt bald ;-)

  10. hallo thomas, hallo zusammen.
    ich habe mich ebenfalls mit fpdf beschäftigt, allerdings hapert es noch an der Cell bzw. MultiCell methode.
    ich möchte einen stundenplan generieren, der 5 spalten (tage) und 6 zeilen (stunden) hat. das klappt auch schon wunderbar. jedoch sollte in den zellen ein zeilenumbruch vorkommen. mit cell klappts nicht, mit multicell macht er alle zellen untereinander.
    hatte von euch schon jemand das problem bzw. eine abhilfe gefunden?
    danke und gruß

  11. Du musst mit SetX(deinwert); nach jeder Zeile den Abstand neu setzen. Ich kann das hier nich so gut erklären, aber ich habs mir selbst auch nur von hier abgeguckt. Dort ist schön erklärt, wie man eine Tabelle mit FPDF erstellen kann.

    …Und ich versuch immer noch Zeit zu finden den zweiten Teil dieses Tutorials zu schreiben, in der eine PDF-Rechnung mit FPDF erstellt wird. Darin kommt auch so ne Tabelle vor…

  12. ah vielen dank. das ist schon mal eine große hilfe, da komm ich schon mal einen kleinen schritt weiter!

  13. Hallo,

    Das PHP Programm ur ausgabe einer PDF Rechnung ist spitze. Ich bin schon seit Jahren dabei, immer mal wieder weiter eine Rechnungsverwaltung mit Artikeln und Kundenstamm zu programmieren. Hiefür ist das ganze fast perfekt zur Erstellug einer Rechnung!
    Was mich ein bischen stört sind die Gitterrahmen in der Rechnung.
    Ist es irgend wie möglich, den Gitterrahmen zu entfernen und möglicherweise unter jeder Position eine Linie zu machen?

  14. Hallo Alex, ich hab jetzt nicht direkt reingesehen, aber der Rahmen wird normalerweise in der Funktion MultiCell() gezeichnet.
    Die Beschreibung kannst du hier finden.

  15. Hallo Thomas!

    hab das PDF Teil am laufen, klappt auch super hab beispielweise ne Datenbank dran gehangen die automatisch die Rechnungsnummer generiert, etc.

    Nur habe ich ein Problem.
    Habe von einer Firma eine Kopfzeile und eine Fußzeile jeweils als Bild (gute Auflösung).

    Wenn ich das PDF durch PHP generieren werden die Bilder verpixelt. Wenn ich sie manuell über nen PDF maker zu einem PDF generieren gibt es keine Probleme. Hast du vllt einen Rat?

    Danke im Voraus!
    Phil

  16. Das liegt meist an den Größenangaben für Image im Verhältnis zur tatsächlichen Auflösung des vorhandenen Bildes.
    Kann leicht etwas verwirren, guckst du am besten hier: Image
    Viel Erfolg.
    Falls du gar nicht klarkommen solltest erledigen wir auch Aufträge dahingehend (dann aber kostenpflichtig).

  17. Hallo Thomas,

    Danke für die schnelle Antwort!
    Hab mich nun nochmal hingesetzt nachdem ich deinen geposteten Link angeschaut habe. Mit den entsprechenden Parameter ging es dann auch!

    Danke für die Hilfe!

    Gruß
    Phil

  18. Hallo Thomas,

    dies ist wirklich ein schönes und nützliches Tutorial, für Leute wie mich die nicht so viel Ahnung vom Programmieren haben wäre es interessant wenn man etwas tiefer ins Detail bzgl. der Dateierstellung auf dem Webserver zu gehen.

    Gerade bei Rechnungen wäre es ja vorteilhaft, wenn diese als .pdf Datei auf dem Server gespeichert wird so das der Kunde diese jederzeit erreichen kann.

    Ich habe es mit:
    $pdf->Output(rechnung_01);
    bzw.:
    $pdf->Output(rechnung_01.pdf);

    versucht, das erste war der Gedanke: “mit oder ohne .pdf am Ende” aber wie dem auch sei klappen tut es beides nicht, meine Testdatei wird einfach als “Datei” nicht als .pdf gespeichert :(
    Für Hilfe wäre ich dankbar.

    MFG: Stefan

  19. aiii ok, Anfängerfehler, ih muss den Dateinamen natürlich auch in ‘name.pdf’ setzten dann klappt des auch mit dem Nachbarn *g*

  20. Hallo Herr Weise

    Habe Ihnen eine Mail gesandt mit einigen Fragen.
    Ich hoffe das geht auch, da es etwas länger ist und ich es momentan nicht veröffentlichen wollte. .
    Gruß
    Otto Poschel

  21. Hallo Herr Weise,

    Habe mir Ihr Script “Rechnung” ausgedruckt uns studiert.Ich glaube es verstanden zu haben und werde versuchen es auf meine Bedürfnisse (siehe mail) um zu ändern wenn das erlaubt ist.
    Gruß
    Otto Poschel
    Gran Canaria

  22. Hi Otto.
    Mail ist beantwortet.
    Ja, das Skript kann beliebig angepasst und verwendet werden.
    Ich kann auch helfen (gegen Bezahlung).

  23. Thank you so much for providing individuals with such a special possiblity to read from this web site. It really is so superb and as well , jam-packed with fun for me and my office fellow workers to visit your web site really three times in a week to learn the fresh tips you will have. Not to mention, I’m actually amazed for the extraordinary creative ideas you serve. Some 2 facts in this posting are in fact the most suitable I have ever had.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>