Twilo: PDF erstellen

Hallo,

ich möchte auf einer Website per Klick auf ein Button eine PDF Datei erstellen und im Dateisystem (in der Datenbank soll zusätzlich der Dateiname + Datensatz-ID gespeichert werden) erstellen.
Im PDF müssen Grafiken eingebunden, welche sich im Dateisystem befinden, mehrere Tabellen in einer Schleife generiert und dynamischen+statischen Text ausgegeben werden. Die Daten kommen aus einer Datenbank.
Das Layout der generierten PDF soll sich "relativ" leicht ändern lassen.

Bei meiner Suche bin ich auf folgende Möglichkeiten gestoßen
per PHP: Zend_Pdf, File_PDF, fpdf, pdflib
per Python: reportlab

Dann habe ich noch LaTeX mit PDFLaTeX/PDFTeX als Möglichkeit gefunden.
Was ist der Unterschied zwischen PDFLaTeX und PDFTeX?

Layoutänderungen mit generierten PDFs per PHP oder Python sind, denke ich, relativ schwer durch zuführen. Wie sieht das mit LaTeX aus? Kann man dort irgendwie dynamisch Tabellen generieren?
Könnte man evtl. die LaTeX Datei mit Smarty generieren und dann mit PDFLaTeX/PDFTeX die PDFs erstellen lassen?

Mit LaTeX habe ich noch keine Erfahrung, nur mit LyX. Mit OpenOffice lassen sich wohl auch LaTeX Dateien erstellen, ob das jedoch etwas taugt, weiß ich nicht...

Welches LaTeX Buch wäre zu empfehlen?

Auf dem Server (Debian Lenny 64bit) steht PHP 4.4.9, 5.2.11 und 5.3.0, perl 5.8.4 und 5.10.0 sowie python 2.5 zur Verfügung. Andere Sprachen ließen sich relativ leicht nachinstallieren.

mfg
Twilo

  1. Hallo Twilo,

    leicht lässt sich meiner Meinung nach das Layout von HTML anpassen. Wenn Du dem zustimmen solltest, suche nach "html2pdf" in den Suchmaschinen. Es gibt haufenweise Lösungen.

    Gruß aus Berlin!
    eddi

  2. Moin!

    Bei meiner Suche bin ich auf folgende Möglichkeiten gestoßen
    per PHP: Zend_Pdf,

    Vergiss es. Wenn du nicht auf das programmieren von extremem Low-Level stehst, kann man Zend_Pdf nicht sinnvoll gebrauchen.

    File_PDF,

    Noch nie benutzt, keine Ahnung.

    fpdf,

    Der Klassiker, allerdings kann er kein UTF-8, sondern nur ISO-8859-1 (ob -15, erinnere ich nicht).

    pdflib

    Kostenpflichtig.

    per Python: reportlab

    Kenn ich ebenfalls nicht.

    Aber extrem empfehlen würde ich TCPDF. Mächtiger als FPDF, und insbesondere UTF-8-fähig.

    Layoutänderungen mit generierten PDFs per PHP oder Python sind, denke ich, relativ schwer durch zuführen. Wie sieht das mit LaTeX aus? Kann man dort irgendwie dynamisch Tabellen generieren?

    Definiere "Layoutänderungen".

    Die übliche Vorgehensweise zum Kombinieren einer globalen Seitengestaltung (typisch: Briefkopf) mit einem konkreten Text sähe so aus, dass man den Briefkopf als PDF generiert und als Hintergrund in das neue PDF einbindet, und den Text dann in einem vorgesehenen Feld reinschreibt. Textumbruch etc. ergeben sich dann jeweils von selbst. Ändert sich der Briekopf, dann gibts ein neues PDF als Hintergrund sowie eine neue Definition, wo sich die zu befüllende Textbox befindet - fertig.

    Es hängt natürlich von der Art deiner Layoutänderung sowie grundsätzlich von deiner Inhaltsgestaltung ab.

    Könnte man evtl. die LaTeX Datei mit Smarty generieren und dann mit PDFLaTeX/PDFTeX die PDFs erstellen lassen?

    Könnte man sicherlich auch tun. Allerdings muss man dazu LaTeX beherrschen. Das Resultat ist dann sicherlich optisch sehr ansprechend - sofern du es hinkriegst, die Standardformatierung von LaTeX in die von dir präferierte Erscheinungsweise abzuändern. Leider ist zu LaTeX im Netz nur sehr schwer was zu finden.

    Mit LaTeX habe ich noch keine Erfahrung, nur mit LyX. Mit OpenOffice lassen sich wohl auch LaTeX Dateien erstellen, ob das jedoch etwas taugt, weiß ich nicht...

    Das spricht gegen die Nutzung von LaTeX zur PDF-Generierung.

    Ich empfehle TCPDF.

    - Sven Rautenberg

    1. Hallo,

      pdflib

      Kostenpflichtig.

      das hab ich übersehen - 800€ Netto ist schon nicht wenig...

      Aber extrem empfehlen würde ich TCPDF. Mächtiger als FPDF, und insbesondere UTF-8-fähig.

      das hatte ich auch gefunden, jedoch wollte ich nicht alle auflisten
      TCPDF stellt keine Ligatur dar, oder?

      Layoutänderungen mit generierten PDFs per PHP oder Python sind, denke ich, relativ schwer durch zuführen. Wie sieht das mit LaTeX aus? Kann man dort irgendwie dynamisch Tabellen generieren?

      Definiere "Layoutänderungen".

      z.B.
      Grafikänderungen
      Anordnung der Grafiken, Tabelle, Texte
      etc.

      Könnte man evtl. die LaTeX Datei mit Smarty generieren und dann mit PDFLaTeX/PDFTeX die PDFs erstellen lassen?

      Könnte man sicherlich auch tun. Allerdings muss man dazu LaTeX beherrschen. Das Resultat ist dann sicherlich optisch sehr ansprechend - sofern du es hinkriegst, die Standardformatierung von LaTeX in die von dir präferierte Erscheinungsweise abzuändern. Leider ist zu LaTeX im Netz nur sehr schwer was zu finden.

      Mit LaTeX habe ich noch keine Erfahrung, nur mit LyX. Mit OpenOffice lassen sich wohl auch LaTeX Dateien erstellen, ob das jedoch etwas taugt, weiß ich nicht...

      Das spricht gegen die Nutzung von LaTeX zur PDF-Generierung.

      es sollte sich bestimmt jemand finden lassen, der soetwas kann und gegen Bezahlung erstellt :-)

      mfg
      Twilo

    2. N'Abend,

      Die übliche Vorgehensweise zum Kombinieren einer globalen Seitengestaltung (typisch: Briefkopf) mit einem konkreten Text sähe so aus, dass man den Briefkopf als PDF generiert und als Hintergrund in das neue PDF einbindet, und den Text dann in einem vorgesehenen Feld reinschreibt. Textumbruch etc. ergeben sich dann jeweils von selbst. Ändert sich der Briekopf, dann gibts ein neues PDF als Hintergrund sowie eine neue Definition, wo sich die zu befüllende Textbox befindet - fertig.

      Gibt es bei TCPDF die Möglichkeit, ein PDF als Hintergrund einzubinden? Ich hab in den Beispielen nichts gefunden. Oder versteh ich Dich falsch und Du meinst damit, eine Grafik bzw. Bild als Hintergrund einzubinden und dazu eine Definition, an welcher Stelle dann Text in die die Vorlage eingebunden wird?

      Gruß, Thoralf

      1. Moin!

        Gibt es bei TCPDF die Möglichkeit, ein PDF als Hintergrund einzubinden? Ich hab in den Beispielen nichts gefunden. Oder versteh ich Dich falsch und Du meinst damit, eine Grafik bzw. Bild als Hintergrund einzubinden und dazu eine Definition, an welcher Stelle dann Text in die die Vorlage eingebunden wird?

        Ich habe die beschriebene Vorgehensweise vor Jahren mit FPDF und FPDI umgesetzt (letzteres sorgt für den Import des bestehenden PDFs). Mit TCPDF geht das auch: http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/tcpdf-demo/

        - Sven Rautenberg

        1. Mahlzeit,

          Ich habe die beschriebene Vorgehensweise vor Jahren mit FPDF und FPDI umgesetzt (letzteres sorgt für den Import des bestehenden PDFs). Mit TCPDF geht das auch: http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/tcpdf-demo/

          danke, das werd ich mal ausprobieren.

          Gruß, Thoralf

    3. fpdf,
      Der Klassiker, allerdings kann er kein UTF-8, sondern nur ISO-8859-1 (ob -15, erinnere ich nicht).

      ich persönlich schwöre auf den Nachfolger.
      Hat auch nette Tools wie pdfI (Import).

      1. Hallo

        fpdf,
        Der Klassiker, ...

        ich persönlich schwöre auf den Nachfolger.

        ... der von Sven auch erwähnt und empfohlen wurde. Nicht ganz bis nach unten gelesen? ;-)

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        Veranstaltungsdatenbank Vdb 0.3
        1. Hallo

          Hallo,

          ... der von Sven auch erwähnt und empfohlen wurde. Nicht ganz bis nach unten gelesen? ;-)

          Überlesen *Schäm*
          Ausserdem kann man den nicht oft genug erwähnen!

          Tschö, Auge

          Tschau

  3. Könnte man evtl. die LaTeX Datei mit Smarty generieren und dann mit PDFLaTeX/PDFTeX die PDFs erstellen lassen?

    Da kommst Du schon dem Prinzip von LaTeX relativ nahe – es ist auch nur Quelltext wie HTML und kann so bequem als Text-Template generiert werden. Allerdings empfiehlt es sich auch hier, erstmal ein Beispiel-Layout zu erarbeiten und zusätzlich bestimmte Formatierungen in TeX-Macros auszulagern, so dass die Templaterei nicht soviel nervigen Krempel da stehen hat.

    Welches LaTeX Buch wäre zu empfehlen?

    Die Bücher von Helmut Kopka sind im deutschen Raum sehr beliebt und verbreitet. Mit dem ersten Band kommst Du schon sehr weit, die anderen behandeln eher komplexere Dinge.

    Nebenbei gibt es noch zwei weitere PDF-Erstellungsgeschichten, wenn auch nicht unbedingt empfehlenswerte:

    XSL-Fo ist eine XML-basierte Stylesheet-Sprache, die seitenbasierte Layout-Geschichten ermöglicht. Die Sprache besteht dabei aus Konstrukten, aus denen man ein Layout konstruiert. Diese XML-Datei kann man dann mit einem XSL-Fo-Prozessor wie Apache FOP in PDF verwandeln. Allerdings ist XSL-Fo ziemlich kompliziert und die Dokumentationslage ist auch nicht so toll.

    Mein Liebling wäre es mit seitenbasierten CSS PDFs zu erstellen. CSS (3) kann dabei sehr viel mehr, als man glaubt; nur in Browsern ist es kaum implementiert. Aber: Das einzige Programm, dass das macht – PrinceXML – ist sauteuer. Was sehr, sehr doof ist.