1722 Stimmen

Wie kann ich HTML und CSS in PDF einfügen?

Ich habe ein HTML-Dokument (nicht XHTML), das in Firefox 3 und IE 7 gut dargestellt wird. Es verwendet ziemlich einfache CSS, um es zu gestalten und wird in HTML gut wiedergegeben.

Ich suche nun nach einer Möglichkeit, sie in PDF zu konvertieren. Ich habe es versucht:

  • DOMPDF : Es hatte große Probleme mit Tabellen. Ich habe meine großen verschachtelten Tabellen ausgeklammert und das hat geholfen (vorher hat es nur bis zu 128M Speicher verbraucht und ist dann gestorben - das ist meine Speichergrenze in der php.ini), aber es macht ein komplettes Durcheinander von Tabellen und scheint keine Bilder zu bekommen. Die Tabellen waren nur einfaches Zeug mit einigen Randstilen, um einige Linien an verschiedenen Stellen hinzuzufügen;
  • HTML2PDF und HTML2PS : Ich hatte tatsächlich mehr Glück mit diesem. Es gerendert einige der Bilder (alle Bilder sind Google Chart URLs) und die Tabelle Formatierung war viel besser, aber es schien einige Komplexität Problem, das ich noch nicht herausgefunden haben und hielt sterben mit unbekannten node_type() Fehler. Ich bin mir nicht sicher, wie es weitergehen soll; und
  • Htmldoc Dies scheint zu funktionieren gut auf grundlegende HTML, aber hat fast keine Unterstützung für CSS whatsoever, so dass Sie alles in HTML zu tun haben (ich wusste nicht, es war noch 2001 in Htmldoc-Land ...), so ist es nutzlos für mich.

Ich habe eine Windows-Anwendung namens Html2Pdf Pilot ausprobiert, die eigentlich ziemlich gute Arbeit geleistet hat, aber ich brauche etwas, das zumindest unter Linux läuft und idealerweise auf Abruf über PHP auf dem Webserver läuft.

Was übersehe ich, oder wie kann ich dieses Problem lösen?

9 Stimmen

Html2Pdf verwendet eine eingebettete Instanz des IE, um die Seite zu rendern, und konvertiert diese dann in PDF - wahrscheinlich über den Druckmechanismus des IE.

58 Stimmen

Da es sich um eine Frage aus dem Jahr 2008 handelt, ist dompdf inzwischen viel ausgereifter ;-)

5 Stimmen

Dompdf unterstützt jetzt CSS 2.1 und kann mit @import , @media et @screen Regeln, und lädt externe Stylesheets. Es kommt auch mit allem gebündelt für sie erforderlich, um zu arbeiten, obwohl es Dinge, die Sie installieren können, um eine bessere Leistung als die Standard-Bibliotheken zu erhalten. code.google.com/p/dompdf

9voto

Giorgio Bozio Punkte 2952

Ich habe eine öffentliche API entwickelt, um PDF-Dateien aus Webseiten zu erstellen. Es hat eine schöne PHP-Client-Klasse, die es super einfach zu bedienen macht. Sie verwendet wkhtmltopdf, um das PDF in der Cloud zu rendern.

Es ist nichts Besonderes in der HTML erforderlich. Keine Notwendigkeit für absolute URLS in Bildern/css/js-Links. Funktioniert auch auf localhost (dev machine).

Derzeit hat der Dienst Endpunkte in 4 Azure-Regionen: USA Ost, USA West, EU Nord, Südostasien.

Es ist schnell, da es ein proprietäres Protokoll verwendet, um den Inhalt der Webseite zur Konvertierung in PDF an die API zu senden.

Sie ist zuverlässig, weil alle Endpunkte gleichmäßig ausgelastet sind.

Kostenloses Konto zum Testen oder für geringe Nutzung verfügbar. Einzelheiten auf der Website:

https://rotativahq.com

9voto

Strae Punkte 17669

Ich glaube nicht, dass eine php-Klasse das Beste für das Rendern einer xHtml-Seite mit css sein wird.

Was passiert, wenn eine neue css-Regel herauskommt? (bald css 3.0...)

Der beste Weg, eine HTML-Seite darzustellen, ist natürlich ein Browser. Firefox 3.0 kann nativ im PDF-Format "drucken", torisugary entwickelte eine Erweiterung (Befehlszeilendruck), um es zu verwenden. Hier finden Sie es.

Wie auch immer, es gibt immer noch viele Probleme beim Betrieb von Firefox nur als pdf-Konverter...

Im Moment denke ich, dass wkhtmltopdf das Beste ist (das ist das, was der Safari-Browser verwendet), schnell, schnell, großartig. Ja, auch OpenSource... Schauen Sie es sich an

0 Stimmen

PHP ist nützlich, wenn Sie eine Art von offizieller Dokumentation ausgeben wollen, z. B. eine Quittung für einen Benutzer, und Sie können CSS verwenden, um es schön aussehen zu lassen.

8voto

PhiLho Punkte 39496

Vielleicht könnten Sie versuchen, Tidy zu verwenden, bevor Sie die Datei an den Konverter übergeben. Wenn einer der Renderer an einem HTML-Problem (z. B. nicht geschlossener Tag) scheitert, könnte das helfen.

0 Stimmen

Ja, ein stichhaltiges Argument, aber ich habe bereits daran gedacht. Es gibt keine unangepassten oder nicht standardmäßigen Tags in meinem HTML.

7voto

user1914292 Punkte 1551

Obwohl bereits viele Lösungen angeboten werden, empfehle ich die folgenden beiden:

  1. HTM2PDF - bietet eine API zur Konvertierung von HTML in PDF und verfügt außerdem über ein PHP-SDK, das die Implementierung in PHP sehr einfach macht.
  2. PDFmyURL - bietet eine API an, die auch URL und HTML in PDF umwandelt, mit ungefähr der gleichen Funktionalität wie HTM2PDF, aber sie arbeitet mit einem Lastausgleich und ist schon etwas länger auf dem Markt

Was diese beiden APIs von den zuvor genannten Lösungen unterscheidet, ist, dass sie neben der Konvertierung von HTML in PDF mit CSS und JavaScript auch PDF-Rechteverwaltung, Wasserzeichen und Verschlüsselung bieten. Es handelt sich also um eine All-in-One-Lösung für alle, die sofort loslegen wollen.

Haftungsausschluss: Ich arbeite für Kaiomi, ein Unternehmen, das diese beiden Websites betreibt.

0 Stimmen

Ich würde mich nicht auf einen Dienst verlassen wollen, wenn es steht zum Verkauf . In Anbetracht der Tatsache, dass es in dieser Auktion unverkauft blieb, kann ich nur annehmen, dass es in naher Zukunft verkauft werden wird?

0 Stimmen

Mein Unternehmen hat es einige Zeit nach der Auktion erworben....

0 Stimmen

In diesem Fall gibt es wohl keinen Grund zur Sorge.

7voto

Stephan Eggermont Punkte 15743

Feines Rendering hat nichts zu bedeuten. Wird es validiert?

Alle Browser tun ihr Möglichstes, um etwas auf dem Bildschirm anzuzeigen, egal wie schlecht die Eingabe ist. Und natürlich tun sie nicht dasselbe. Wenn Sie das gleiche Rendering wie FireFox wollen, können Sie dessen Rendering-Engine verwenden. Es gibt pdf-Generatoren dafür. Das ist allerdings eine ganze Menge Arbeit.

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