PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


PDFs dynamisch generieren: viele Möglichkeiten

with 34 comments

Oft hat man eine Webseite in die man auch eine Export-Möglichkeit einbauen möchte, scheut aber den großen Aufwand, PDFs etc. zu generieren. Doch es gibt auch einfache schnelle Lösungen, die meistens ausreichen. Hier möchte ich einige im Überblick aufzählen.

    • Einfach HTML nehmen und daraus ein PDF basteln. Viele Daten, die wir bereits auf der Webseite darstellen, sollen so oder ähnlich in das PDF fließen. Mit geeigneter Strukturierung verhindert man somit doppelten Code. Meine aktuellen Lieblinge für diese Aufgabe sind dompdf und WkhtmlToPDF (siehe Blogartikel). Es gibt aber noch einige mehr, beispielsweise mPDF, das intern FPDF und HTML2FPDF nutzt. Ein älterer Vertreter dieser Spezies ist HTML_ToPDF. Doch diese Lösungen haben einige Probleme, beispielsweise hängt die Ausgabe häufig stark von den Daten ab: HTML ist nicht seitenorientiert, sodass es sehr schwer sein kann ein mehrseitiges PDF zu erzeugen (wo der Seitenumbruch an der korrekten Stelle ist). Auch lässt die Unterstützung von CSS oder nicht-W3C-konformen HTML häufig zu wünschen übrig. Für einfache Einseiter jedoch gut geeignet.
      <?php
      require_once("dompdf_config.inc.php");
      
      $html =
        '<html><body>'.
        '<p>Put your html here, or generate it with your favourite '.
        'templating system.</p>'.
        '</body></html>';
      
      $dompdf = new DOMPDF();
      $dompdf->load_html($html);
      $dompdf->render();
      $dompdf->stream("sample.pdf");

  • Der programmatische Ansatz ist aufwändiger, jedoch hat man mehr Kontrolle über das Layout und die speziellen Eigenschaften von PDFs. Bekannte Vertreter sind FPDF oder TCPDF. Nachteil ist dass evtl. doppelter Code entsteht, und man wirklich für jede Zelle bzw. Zeile einen Aufruf machen muss, das kann für mehrseitige Dokumente schnell in viel Arbeit ausarten. Die Nutzung sieht dann ungefähr so aus:
    <?php
    require('fpdf.php');
    
    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'Hello World!');
    $pdf->Output();
  • Wenn man viele PDFs generieren möchte die alle gleich aussehen, nur unterschiedliche Daten enthalten, kann man die template-basierte Lösung LiveDocx nutzen. Man erstellt ein Word-Template mit Platzhaltern und kann dieses dann mit Daten füllen und damit leicht gut aussehende große Anzahlen an Dokumenten generieren. Dieses Template lädt man dann entweder einmalig zu LiveDocx hoch, oder man lädt es mit jedem Aufruf neu hoch. Dann nutzt dann den SOAP-Service, um die eigentlichen PDFs (oder auch html, docx, doc, rtf bzw. Bilder gif, jpg, png etc.) zu generieren. Die Nutzung ist kostenlos, man kann aber auch gegen Geld einen eigenen Server dort bekommen (mit garantierter Verfügbarkeit, Ressourcen, Bandbreite), oder gar einen eigenen LiveDocx Server ins lokale Netz stellen falls man einem Online-Service nicht traut. Ein einfaches Beispiel unter Nutzung der Zend_Service_LiveDocx Klassen (seit V1.10 im Zend Framework enthalten) sieht so aus:
    $mailMerge = new Zend_Service_LiveDocx_MailMerge();
    $mailMerge->setUsername('myUsername')
              ->setPassword('myPassword');
    $mailMerge->setLocalTemplate('template.docx');
    
    $mailMerge->assign('software', 'Magic Graphical Compression Suite v1.9')
              ->assign('licensee', 'Henry Döner-Meyer')
              ->assign('company',  'Co-Operation')
              ->assign('date',     'January 11, 2010')
              ->assign('time',     'January 11, 2010')
              ->assign('city',     'Berlin')
              ->assign('country',  'Germany');
    $mailMerge->createDocument();
    $document = $mailMerge->retrieveDocument('pdf');
    
    file_put_contents('document.pdf', $document);
  • Man installiert sich einen Open-Office (oder Libre-Office) Server und nutzt die Möglichkeit der API, Dokument-Konvertierungen durchführen zu lassen. Ein fertiges Produkt auf dieser Methode aufsetzend hat Thorsten Hodes hier bereits im Blog vorgestellt. 84 Formate vor- und zurück sind damit möglich, also viel mehr als nur die Generierung eines PDFs.
  • Eine sehr professionelle Lösung ist Prince. Für den nicht-kommerziellen Einsatz ist es kostenlos, hinterlässt aber auf der ersten Seite ein kleines Wasserzeichen. Mit Prince ist es möglich, aus XML PDFs zu generieren, also auch HTML, wobei Prince sehr viele Features unterstützt wie beispielsweise CSS, SVG, WOFF (WebFonts), PDF Kompression und Verschlüsselung usw. Prince ist voll ACID2 kompatibel, eine kommerzielle Einzel-PC Lizenz startet bei 450€, die Servervariante liegt bei 3500€. Eine andere Möglichkeit ist die Nutzung von DocRaptor, einem Online-Dienst hinter dem Prince steckt. Ab 15€ pro Monat geht es los. Also normalerweise nichts für den privaten Einsatz, wollte es aber erwähnt haben.

Ich glaube das waren die Möglichkeiten die man so hat, man ergänze mich falls ich etwas vergessen habe, entweder durch Kommentare oder gar durch einen Gastartikel zum jeweiligen Thema.

Written by Michael Kliewe

August 12th, 2011 at 12:16 pm

Posted in PHP

Tagged with , , , , ,

34 Responses to 'PDFs dynamisch generieren: viele Möglichkeiten'

Subscribe to comments with RSS or TrackBack to 'PDFs dynamisch generieren: viele Möglichkeiten'.

  1. http://html2pdf.fr/en/

    Bisher habe ich noch nichts besseres gefunden, vor allem, weil es auch signieren und verschlüsseln kann. :-)

    Oliver

    12 Aug 11 at 12:45

  2. In der Aufstellung fehlt auf jeden Fall noch die kommerzielle PDFLib (www.pdflib.com). Diese ist zwar nicht ganz günstig, bietet aber auch (je nach Lizenz / Ausbaustufe) ein template-basiertes Generieren von PDF-Dateien und viele Dinge mehr. In der Vergangenheit hat die PDFLib bei meinen Projekten jede andere Technik übertroffen. Der Clou ist die eingebaute Unterstützung von Sonderfarben (PANTONE), mit der es möglich ist PDFs für den profesionellen (Offset-) Druck zu erzeugen.

    Ingo

    12 Aug 11 at 12:45

  3. Mir fällt noch die pdflib (http://www.pdflib.com/) und die Möglichkeit, über LATeX PDF-Dokumente zu generieren ein. Beides habe ich vor Jahren mal in ‘nem Projekt verwandt. Heute nutze ich eher FPDF. Wobei mein Fokus auch nie der Export von Webseiten in PDF-Dokumente, sondern eher die Formularausgabe war.

    Tobias Rohde

    12 Aug 11 at 12:47

  4. Hi…

    kleine Anmerkung zu FPDF/TCPDF:

    IMO kann man damit auch sehr gut große/mehrseitige Dokumente erstellen. Einfach von FPDF/TCPDF erben und mit ein Paar eigenen Methoden für Header, Footer, Absatz, Bild, Index, Tabelle … (was man eben so braucht) kann man sich ein schönes Layout basteln was man dann nur noch mit Daten füllen muss.

    Wer es öfter und für verschiedenen Dokumente/Layouts braucht sollte noch eine Abstrakte Klasse dazwischen schieben. Dank OOP lassen sich die beiden Libs mit ein paar Schleifen, Bedingungen und etwas Logik zu einer richtigen “PDF-Waffe” ausbauen.

    Initial ist der Aufwand natürlich höher als bei den anderen Methoden, allerdings hat man den imho unschlagbaren Vorteil, dass man am Ende 100%ig das raus bekommt was man haben will. Denn nach meiner Erfahrung klappt das bei den HTML to PDF Varianten, WebServices oder OpenOffice nie. Bzw. ist man ewig damit Beschäftigt die Vorlage so anzupassen, dass der PDF-Generator das Dokument wie gewünscht darstellt.

    GatheredPain

    12 Aug 11 at 12:56

  5. Der Vollständigkeit halber:

    ZF beitet auch Zend_Pdf.

    Aber wer das schon mal benutzt hat weiß, warum es (wahrscheinlich) im Beitrag nicht erwähnt wurde ;-)

    GatheredPain

    12 Aug 11 at 13:05

  6. Man kann auch noch mit xsl-fo arbeiten. Dazu benötigt man z.B. xhtml als Vorlage, nutzt dann csstoxslfo und schickt das Ergebnis an einen xsl-fo Prozessor. Damit kann man im Prinzip alle Ausgabeformate erhalten, für die man einen Prozessor findet ;)

    Für PDF gibt es ein paar; sowohl opensource Tools als auch kommerzielle.

    Norbert

    12 Aug 11 at 13:14

  7. @GatheredPain:

    Wieso denn? Wenn man sich mal als PS-Plotter auf ‘nem DINA4-Sheet austoben möchte, ist das der Hammer !!! ;)

    Im Ernst: Die Überschrift beinhaltet “automatisch generieren” und nicht “in Stein meißeln” – deswegen ist Zend_Pdf zu Recht nicht dabei.

    RennerC

    12 Aug 11 at 13:30

  8. @Norbert

    XML/XSLT/XSL-FO hatte ich auch schon im Kopf, aber da das generieren des PDF selbst nicht in PHP möglich ist sondern externe Software installiert und per exec o.Ä. aufgerufen werden muss (korrigiert mich wenn ich falsch liege), gehörts hier eigentlich nicht dazu.

    … obwohl … Open/Libre-Office geht auch nur via system call, oder?

    Außerdem hab ich die Erfahrung gemacht, dass freie Prozessoren extrem langsam sind… 2-3 Sekunden für ein 10-Seitiges Dokument kann und will ich keinem User zumuten.

    GatheredPain

    12 Aug 11 at 13:55

  9. Wir benutzen an einigen Stellen LaTeX zur Generierung von PDFs. Gerade wenn man häufig ähnliche aber nicht identische Inhalte in sauberem Textsatz erzeugen will, ist das eine klasse Lösung. PHP erzeugt aus einem Template und den Inhalten ein .tex und ruft dann pdflatex auf. Die Ergebnisse können sich wirklich sehen lassen. Vorher hatten wir FPDF verwendet und waren immer wieder an Grenzen gestoßen. Automatische Tabellenumbrüche z.B. in Rechnungen sind mit LaTeX beispielsweise überhaupt kein Problem.

    Thomas

    12 Aug 11 at 14:25

  10. Wir benutzen häufiger FPDF als Basis, teilweise in Kombination mit FPDI (http://www.setasign.de/products/pdf-php-solutions/fpdi/), so dass wir PDF-Dateien als Vorlagen nutzen können und »nur« noch füllen.

    Unsere PDF-Klasse erweitert FPDF dann u.a. um einen einfachen HTML- und Tabellenparser, mit dem dann schon etliches möglich ist. Damit können wir auch Seiten gezielt steuern, so dass die »üblichen« HTML-Nachteile nicht (so sehr) zur Geltung kommen.

    Dominik Pesch

    12 Aug 11 at 15:10

  11. Ich nutze seit vielen Monaten widerwillig TCPDF. Es ist lt. Hersteller ebenfalls in der Lage, HTML-Code zu empfangen und zu verarbeiten. Das funktioniert mehr schlecht als Recht. Viele Styles, die nicht inline definiert sind, werden nicht übernommen. Außerdem gibt es viele Eigenheiten, so wird z.B. eine border-top-Anweisung verstanden, manchmal nicht. Schade finde ich ich auch, dass die API scheinbar unkontrolliert gewachsen ist. Viele Methoden erfordern eine Parameterzahl in zweistelliger Höhe, andere Methoden dienen nur als Wrapper und sollen einem z.B. das Styling des Headers übernehmen. Will man diesen individuell gestalten, muss man erst von der Klasse ableiten.

    Da ich also sehr viel Ärger mit TCPDF hatte, werde ich mir mal DomPDF ansehen. Die Beispiele sahen vielversprechend aus!

    Daniel S

    12 Aug 11 at 16:39

  12. Was ich in vielen Projekten verwendet habe, in denen Formulare gefüllt werden mussten:

    Vorgefertigtes PDF (bspw. mit Adobe o.ä.) erstellt via Zend_PDF einlesen und nur noch die passenden Datenfelder befüllen.

    Das PDF selber kann von einem fähigen Grafiker / Designer gesetzt und auch später noch nachbearbeitet werden. Mittels Zend_PDF werden dann die Vorlage-Seiten eingelesen und ggf. dupliziert, anschließend erfolgt die Befüllung mit dynamischen Inhalten an den passenden Stellen. Damit sieht’s professionell aus, die Bearbeitung des Layouts liegt ohne Bruch bei jemanden der sich damit auskennt und die Aufwände zur Programmierung der Befüllung sind minimal.

    Für variablen Fließtext in größeren Mengen ist diese Lösung dann allerdings schon wieder recht aufwändig und in diesem Fall weniger geeignet.

    Tobias

    12 Aug 11 at 18:43

  13. @GatheredPain:
    Naja, stimmt schon, aber macht ja nichts wenn man ein externes Tool nutzt. LaTeX wurde ja auch benannt und das wird wohl nicht direkt aus PHP heraus gehen.

    Hauptsache das Ergebnis stimmt. Und wenn man es genau nimmt kann man auch die Java-Bridge benutzen und die fop Lösung darüber implementieren ;)

    Norbert

    12 Aug 11 at 19:34

  14. Die Lösung mit LATeX gefällt mir prinzipiell sehr gut, ist zwar schon etwas her als ich damit gearbeitet habe, aber man kann damit echt sehr schöne Dokumente erstellen. Sollte ich mal ausprobieren.

    Zend_Pdf hat (oder hatte?) damals als ich es ausprobiert habe extreme Probleme mit Fließtext, der wurde nicht richtig umgebrochen und ist dann über den Rand hinaus vom Blatt gefallen. Das war damals das K.O. Kriterium, ansonsten war es nicht schlecht glaube ich. Dass man damit auch Werte in vorgefertigte Dokumente füllen kann wusste ich z.B. auch noch nicht. Ich glaube ich habe es vor einigen Monaten mal genutzt um mehrere PDFs zu mergen… Aber sobald man da nicht-100%-konforme PDF-Dokumente hat hagelt es Exceptions. PDFs mergen kann man auch sehr gut mit gs erledigen, ist auch etwas flexibler was nicht-standard-konforme Dokumente angeht. Und man kann auch schön ein vorhandenes PDF in einzelne PNGs umwandeln, kann auch recht nützlich sein.

    @Norbert: Vielleicht solltest du mal in deinem Blog zeigen wie man mit xsl-fo arbeiten kann, mir sagt das grad gar nichts ;-)

    Michael Kliewe

    12 Aug 11 at 20:18

  15. @Michael: lässt sich einrichten :)

    Norbert

    13 Aug 11 at 14:14

  16. PDF? -> LaTeX FTW :D

    Christoph

    13 Aug 11 at 15:40

  17. Also ich kann da noch PD4ML (http://www.pd4ml.com) empfehlen. Die Pro Version (dringend zu empfehlen) kostet 160 Euro, aber die Geschwindigkeit ist enorm. FPDF kann man ja bei der Generierung zu sehen. Und gerade, wenn man dieses Tool häufiger einsetzt (Intranet) sollte man sich das schon überlegen, da die Performance sehr gut ist und auch die Umsetzung von CSS. Eigentlich kann man seine normal generierte HTML-Seite nehmen und dieser noch ein paar spezielle CSS Attribute verpassen und hat man eine perfekte PDF Ausgabe.

    MaikL

    14 Aug 11 at 00:20

  18. @GatheredPain
    Ich stimme absolut zu, TCPDF ist absolut zu empfehlen, wenn man erstmal verstanden hat, wie das funktioniert ist es absolut mächtig. Mit netten Features wie Transaktionen, wenn man dynamischer Inhalt zu lang wird ->rollBack() die letzte Zeile(n) und los gehts auf der nächsten Zeile.

    @alle
    Generell würde ich FPDF gar nicht benutzen, da es nicht weiterentwickelt wird. Die Entwickler arbeiten jetzt nur noch TCPDF, was an den fast indentischen Funktionsaufrufen und einer fast 100% Kompabilität zu sehen ist. Wer sich ein wenig mit OOP auskennt, wird schnell merken, dass es an sich gar nicht viel Aufwand ist, mit TCPDF Dokumente zu erstellen! Wir haben auf der Arbeit teilweise zig hunderseitige Dokumente damit erstellt, ohne Probleme…

    Ach ganz wichtig: TCPDF kann UTF-8 !!!

    Paul Schramenko

    15 Aug 11 at 12:00

  19. Habe mich mit den Thema gerade intensive auseinader gesetzt TCPDF ist Schrott DomPDF schon besser man muss aber wissen wie man das HTML baut (HTML 4.0 Transitional) bezogen auf die letzte Version 0.6 beta 2 z.B. werden css border die in css klassen stehen nicht interpretiert d.h. alle border direkt mit style in den Tag schreiben. Nur Tabellen benutzen bzw. bei komplexen Sachen Tabelle in Tabelle. padding funktioniert nicht d.h den Platz mit td schaffen.
    Mehr als 3 Div’s zu floaten geht nicht )-:
    Wer nach DIN 5008 die Seiten einrichten möchte einfach so

    .dPageOuter
    {
    width: 210mm;
    height: 297mm;

    position: absolute;
    left: -12mm;
    top: -12mm;
    }

    .dPageInnerAlign
    {
    height: 14mm;
    }

    .dPageInner
    {
    height: 273mm;

    margin-left: 20mm;
    margin-right: 4mm;
    }

     

    ….
    ….
    ….

    dies representiert das Blatt mit den Maßen linker Rand ca. 24mm ; rechter Rand 8mm (minimum, eigentlich 16mm) ; oben ca. 24mm und unten sollten es 11mm sein um auf 262mm x 170mm zu kommen bei minimum 8mm dann 262mm x 178mm

    Habe mit DomPDF sehr professionelle komplexe Formulare hinbekommen ;-)

    cu ECMA-262 3rd

    ECMA-262 3rd

    25 Aug 11 at 17:56

  20. schade das HTML ist nicht mit drin. Wer an dem Thema interesse hat einfach mailen.

    ECMA-262 3rd

    25 Aug 11 at 17:58

  21. ecma-262-3rd(at)gmx.de

    ECMA-262 3rd

    25 Aug 11 at 18:01

  22. ECMA-262 3rd: “TCPDF ist Schrott”

    Das nenn’ ich mal konstruktive Kritik ^

    Gibts auch irgend welche objektiven Gründe für deine These? Passt es nicht zu deinen Anforderungen, ist es dir zu kompliziert/aufwändig, nicht umfangreich genug, oder was?

    GatheredPain

    25 Aug 11 at 18:46

  23. Hallo,

    wie du oben schon schreibst von HTML zu PDF ist tricki mit TCPDF habe ich es versucht aber keine Change die ränder so einzustellen nach DIN5008 bzw. hatte Probleme mit css border. Ich denke wenn man bei TCPDF die reinen PDF Klassen benutzt dann ist es bestimmt super. Bei DomPDF habe ich es raus man muss einige Sachen beachten könnte mal ein Tutorial dazu Verfassen. Das Schrott zu TCPDF hat sich von HTML zu PDF bezogen.

    cu ECMA-262 3rd

    ECMA-262 3rd

    25 Aug 11 at 23:47

  24. Also ich kann, das bestätigen, dass HTML mit TCPDF, nun ja, sagen wir gewöhnungsbedürftig ist. Viele Elemente werden nicht richtig umgesetzt, es ist alles recht kompliziert, usw. … Zumindest war so, als ich es kurz getestet hatte.
    Meiner Meinung nach gehört HTML (CSS) aber auch nicht in ein PDF.
    Ich habe schon diverse PDFs erstellt und habe noch nie Probleme gehabt, irgendetwas damit umzusetzen.
    TCPDF bietet aber auch viele Vorteile, beispielsweise kann es UTF-8, man hat Transaktionen (ok ok, die kann man ganz schnell auch in andere Klassen einbauen, aber es ist eben schon vorhanden). Es gibt ganz tolle Elemente wie MultiCells und man man beispielsweise ganz simpel Seitennummerierungen in Kettenbriefen erzeugen (z.B.: 1,2,1,2,1,2,1,2,3, usw.), und vieles weitere.
    Daher halte ich solche Aussagen für recht schwach und schwer haltbar. Sicherlich hat auch TCPDF seine Schwächen genauso wie DomPDF. Es hat ja sicherlich einen Grund, warum so viele Leute TCPDF benutzen.

    Paul Schramenko

    26 Aug 11 at 00:15

  25. Hallo,

    das HTML ist ja nicht im PDF, aus dem HTML wird eine PDF Syntax erzeugt. DomPdf ist dazu da um aus HTML PDF zu erzeugen. TCPDF kann dies auch aber hauptsächlich direkte Syntax zu erzeugen über die Klassen. Für mich ist nur HTML zu PDF interessant weil HTML wird durch gegebenenfalls XSLT, XPATH erzeugt. Das HTML kann ich in meiner Web Anwendung ansehen und auch per E-Mail versenden bzw. dazu eine PDF erstellen. Das einzige Problem ist noch das DomPDF nicht den ganzen Funktions Umfang von CSS, HTML unterstützt bzw. HTML 4.0 vs. XHTML weil ich meistens in meiner Web Anwendung Valides XHTML 1.0 habe möchte und E-Mail Clients nur HTML 4.0 unterstützen. Die Problematik bin ich gerade dabei zulösen bzw. eine Ablauf Konzeption zu schaffen dabei hilft mir XSLT.

    cu ECMA-262 3rd

    ECMA-262 3rd

    26 Aug 11 at 00:35

  26. ECMA-262 3rd: “Das Schrott zu TCPDF hat sich von HTML zu PDF bezogen.”

    Die Aussage macht schon mehr Sinn, und da stimm ich dir auch zu. ;-)

    Aber ich persönlich bin auch der Meinung: Warum den Umweg über HTML/CSS? Wenn es on the fly funktionieren würde, ich also irgend eine Website 1:1 in PDF “konvertieren” könnte, würd ich es noch einsehen. Aber wenn ich gezwungen bin dafür separate Stylsheets zu schreiben und dann noch gestalterisch eingeschränkt bin… schreib ichs lieber gleich in PHP.

    GatheredPain

    26 Aug 11 at 12:24

  27. Die Anwendung dies in HTML/CSS zumachen hat den Sinn das du ein Formular (z.B eine Anforderung -> keine Webseiten) jemand per Email zusenden kannst er dies ausgefüllt zurück sendet (warum per E-Mail? weil man kein eigens Portal aufbauen möchte) und der Bearbeiter sieht original das Formular in seiner Web Anwendung wenn alles OK ist dann PDF daraus machen.

    Also E-Mail -> Web -> PDF

    cu ECMA-262 3rd

    ECMA-262 3rd

    26 Aug 11 at 14:16

  28. Kenntjemand von euch PDFTemplate (www.pdftemplate.eu)? Dort kann man Open Office Dateien mit Platzhaltern (Variablen) hochladen und per Web Schnittstelle PDF Dateien daraus erzeugen. Klappt wirklich sehr gut!

    Niko

    7 Mrz 13 at 09:30

  29. Hi. Danke für den Bericht. Ich habe dompdf ausprobiert und folgendes Problem: Wenn ich Tags verwende (z.B. Sehr geehrter Herr {Nachname} ), dann werden diese Tags nicht geladen. Ich kann bisher also nur statische Inhalte umwandeln.
    Gibt es eine Lösung mit dompdf oder muss ich auf etwas anderes zurückgreifen?

    Mark

    28 Aug 13 at 09:58

  30. @Mark Womit sollen die Tags denn ersetzt werden? DomPDF beinhaltet keine Template-Sprache oder ähnliches, man muss einen HTML-String übergeben. Wenn also Template-Variablen ersetzt werden sollen dann muss man sich (natürlich) selbst drum kümmern, also es vorher nochmal durch die Template-Engine jagen und die Ersetzungen vornehmen lassen. Automatisch passiert da nichts.

    Michael Kliewe

    28 Aug 13 at 10:58

  31. Danke für die Zusammenfassung. Ich verwende sehr häufig TCPDF und muss sagen, dass es nach kurzer Eingewöhnung, super easy ist, damit ordentliche PDFs zu erzeugen.

    Michael Hack

    30 Sep 13 at 17:07

  32. Hallo, danke für die ausführliche Darstellung. Da der Blogeintrag schon etwas zurückliegt, fände ich eine Aktualisierung spannend.

    Eine Ergänzung noch von mir:

    es nicht allzu schwer mittels unoconv (LibreOffice als headless service) und einer beliebigen XML-Bibliotek eine Art LiveDocX selber zu bauen (es gibt viele Infos dazu im Netz, bspw. hier http://wiki.ubuntuusers.de/unoconv).

    Mittels Platzhalter im XML (ich speichere die Vorlagen dazu als flat XML .fodt) kann man dann bspw. Rechnungen etc. relativ leicht erstellen.

    aristipp

    12 Feb 14 at 16:39

  33. […] heutige Artikel ist auf Wunsch von Michael entstanden. Es ging um das Thema, wie man aus einer HTML-Datei eine PDF Datei erstellen kann und […]

  34. Als schöne, schlanke Lösung auf Basis von hochwertigen Templates wäre hier noch http://pdfnow.com zu nennen.

    Es arbeitet mit XSL-FO-Templates, so dass auch Kopf-/Fusszeilen, Tabellen, andersartige Folgeseiten, etc. realisierbar sind.

    Der schnellste Weg ist, dort ein Muster-Template herunterzuladen, anzupassen und loszulegen. Generiert wird über einen einfachen PHP-Aufruf “generatePdf(TemplateName, Parameter-Array)”

    Peter

    16 Jul 14 at 18:20

Leave a Reply

You can add images to your comment by clicking here.