9 Stimmen

HTML zu PDF vs. Programmatische PDF-Erstellung mit PHP

Ich habe eine PHP-Anwendung, die einige PDF-Rechnungen und PDF-Zeiterfassungsbögen mit schönen Kopf- und Fußzeilen generieren muss. Einige Stackoverflow-Benutzer empfehlen die Verwendung von TCPDF zur Erstellung der PDF-Dokumente. Bei meinen Recherchen habe ich zwei Ansätze zur PDF-Erzeugung entdeckt:

1) Programmatische Formatierung der PDF-Datei wie folgt:

    $tcpdf->SetFillColor(255, 0, 0);
    $tcpdf->SetTextColor(255);
    $tcpdf->SetDrawColor(128, 0, 0);
    $tcpdf->SetLineWidth(0.3);
    $tcpdf->SetFont('', 'B');

2) Konvertierung von HTML in PDF

Wie entscheide ich, welchen Ansatz ich wählen soll?

2voto

David Snabel-Caunt Punkte 57046

Ich kann empfehlen Zend_Pdf die nach Ihrer Einstufung eine programmatische Methode ist.

Eine HTML-Abstraktion ist nett, aber ich glaube nicht, dass Sie die volle Leistung und Kontrolle einer vollständigen geometriebasierten Zeichen-API haben. Seien Sie vorsichtig mit Bibliotheken wie fpdf, die nicht unterstützen UTF-8 aus dem Feld, und verwenden Sie einen armen Mann Parser zu "konvertieren" HTML zu PDF.

Was Ihre Anwendung betrifft, so habe ich ein System entwickelt, das Vorlagen für Rechnungen erstellt. Meine Benutzer können eine PDF-Vorlage hochladen, die von Zend_Pdf extrahiert wird. Diese Vorlage wird dann für jede Seite der generierten Rechnung verwendet, was eine einfache Anpassung ermöglicht.

Beachten Sie, dass mein Publikum hauptsächlich aus Grafikdesignern besteht, die in der Lage sind, diese Vorlagen zu erstellen, daher war dies die geeignete Lösung. Wenn Ihr Publikum nur mit HTML vertraut ist, könnte die "Umwandlung" von HTML in PDF die beste Lösung sein.

1voto

Exception e Punkte 1846

Hallo, Sie haben zwei Möglichkeiten. Sie können verwenden dompdf die es Ihnen ermöglicht, Ihr Dokument als normales HTML-Dokument zu gestalten und es mit CSS zu stylen. Sie können dieses Dokument in ein PDF-Dokument umwandeln. Meine Erfahrungen waren gut. Ich rendere eine normale HTML-Seite mit Zend_View und verwandle sie in ein PDF-Dokument. Auf diese Weise hat man eine extrem flexible Vorlage, da man alle Arten von Darstellungsentscheidungen in der HTML-generierenden Ansicht treffen kann.

siehe die liste der css-kompatibilität .

Alternativ dazu könnten Sie verwenden livedocx . Dies ermöglicht auch einen vorlagenbasierten Ansatz, allerdings starrer und ohne html. A Integration für Zend Framework ist auf dem Weg.

1voto

JamesG Punkte 4258

Ich habe mit allen drei Ansätzen reichlich Erfahrung:

  1. Programmatische Erstellung des Dokuments mit TCPDF (das, obwohl es von FPDF abgeleitet wurde, von Haus aus UTF-8 unterstützt). Obwohl ich ein großer Fan von Zend Framework bin, muss angemerkt werden, dass Zend_Pdf in seinem Funktionsumfang noch nicht reichhaltig genug ist, um auf diese Weise verwendet zu werden.

  2. Ein Grafikdesigner erstellt eine Vorlage, lädt sie mit Zend_Pdf und fügt ihr dann zusätzliche Inhalte hinzu. Zend_Pdf (1.10.2 - 1.10.7) funktionierte in diesem Fall ziemlich gut, AUSSER wenn man versuchte, eine neue Seite zu instanziieren und sie dem Dokument hinzuzufügen - das warf eine Menge Fehler.

  3. Konvertierung von HTML in PDF mit htmldoc. Dieser Ansatz war schlecht, aber hauptsächlich wegen der Einschränkungen in htmldoc.

Ich habe TCPDF noch nicht für die Konvertierung von HTML in PDF verwendet, aber nach der allgemeinen Qualität des Codes zu urteilen, würde es wohl recht gute Arbeit leisten. (Ich habe TCPDF wirklich bis an die Grenzen getrieben, einschließlich des Renderns von grafisch aufwendigen Dokumenten in RTL-Zeichensätzen, Chinesisch usw., und es hat einwandfrei funktioniert). Wenn Sie sich also entscheiden, es programmatisch zu machen, würde ich empfehlen, TCPDF zu verwenden, aber wenn Sie eine schöne Vorlage von einem Grafikdesigner haben und beabsichtigen, einfach etwas hinzuzufügen, ist es eine vernünftige Wahl, sie mit Zend_Pdf zu laden und von dort aus zu modifizieren (obwohl Sie am Ende immer noch Word-Wrapping und einige andere grundlegende Dinge implementieren werden).

0voto

TheHippo Punkte 58289

Ich empfehle auch die Umwandlung von HTML in PDF:

  • Es ist einfacher zu realisieren
  • Es ist einfacher, das Layout/Design später zu ändern.
  • Wahrscheinlich können Sie einen Teil der html-Datei der Seite wiederverwenden

Als ich einmal eine PDF-Generation für eine Website erstellte, verwendete ich html2ps und konvertierte dann später das Postscript in PDF.

0voto

JeffreyABecker Punkte 2693

Ich schlage die programmatische Formatierung vor.

In der .net Welt habe ich eindeutig negative Erfahrungen mit html zu pdf Konvertern gemacht. Sie scheinen in 2 Kategorien zu fallen:

Diejenigen, die Ihre HTML-Datei "analysieren" und versuchen, sie in ein PDF zu verwandeln. Diesen fehlen oft einige wirklich grundlegende Funktionen wie Stilvorlagen und Unterstützung für alles außer tabellenbasiertem Layout.

Diejenigen, die Ihr HTML in ein Bild "drucken" und dieses in ein PDF-Dokument einfügen. Diese können tatsächlich ein anständig aussehendes Dokument erzeugen. Sie scheinen durch die Verknüpfung eines Browsers mit der Bibliothek zu funktionieren, was zu Threading-Problemen und schlechter Leistung führt.

Ich habe mittelmäßige Erfahrungen mit direkten pdf apis gehabt, aber php scheint einige deutlich bessere Bibliotheken an dieser Front zu haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X