2013-10-09 2 views
5

Ich versuche, eine HTML-Seite in PDF zu konvertieren. Die Konvertierung funktioniert gut mit PhantomJS, jedoch scheint phantomjs CSS3 columns nicht zu unterstützen.Unterstützt Phantomjs CSS3-Spalten für die Umwandlung von HTML in PDF?

Der Befehl Ich renne (html-> pdf)

phantomjs.exe examples/rasterize.js http://davidwalsh.name/demo/css-columns.php sample.pdf 

Die PDF resultierenden den CSS-Spalten-Stil nicht ehren, sondern eine vertikale Liste von Elementen angezeigt wird.

jedoch den folgenden Befehl ausführen konvertieren html> Bild macht den CSS3 Columns Stil ehrt:

phantomjs.exe examples/rasterize.js http://davidwalsh.name/demo/css-columns.php sample.png 

Kann jemand bitte bestätigen, dass dieses Verhalten zu erwarten ist?

BTW, habe ich versucht mit wkhtmltopdf aber diese does/will not be supporting CSS Columns.

Vielen Dank

+0

Neugierig, wenn Sie jemals etwas gefunden haben, das Spalten unterstützt. Ich stoße auf ähnliche Probleme und während wkhtmltopdf sehr gut gemacht hat, würde ich immer noch Spaltenunterstützung haben. – MikeTheReader

+0

@ Dante617 Nein, nichts, das Open-Source ist, unterstützt CSS3-Spalten. Ich habe Phantom JS und wkhtmltopdf vergeblich versucht. Beide Generatoren sind sehr gute Bibliotheken. Phantom ist etwas besser in Bezug auf die Geschwindigkeit. – singh1469

+0

Danke. Ja, Phantom JS war auch das, was ich am Ende hatte, da es eine gute Unterstützung für Float hatte, und ich habe das nur benutzt, um Spalten nachzuahmen. – MikeTheReader

Antwort

3

Ich glaube, dass die Webkit-Version auf dem PhantomJS wahrscheinlich beruht ist CSS3 Spalten nicht Implementierung, obwohl der große Webkit-Browser (Safari und Chrome) beide tut. Dieser Link

https://github.com/ariya/phantomjs/wiki/Supported-Web-Standards

und Link

http://trac.webkit.org/wiki/QtWebKitFeatures22

so viel wie Licht werfen, da es zu diesem Thema ist, AFAIK.

+0

Ich kam zu diesem Schluss zu. Danke vielmals. – singh1469

+0

Vote für das Problem hier: https://github.com/ariya/phantomjs/issues/11821. Das "Umgehen" besteht darin, zuerst ein Bild zu erstellen – Ryan

2

Ich bin zu dem gleichen Schluss gekommen wie @Stolli. Aber als eine Arbeit, habe ich Folgendes getan:

Verwenden Sie CSS3-Spalten und konvertieren Sie die HTML zu einem Bild mit wkhtmltoimage, die mit der Bibliothek wkhtmltopdf ausgeliefert wird. Dadurch wird die CSS3-Spaltenstruktur beibehalten.

Dann betten Sie das generierte Bild in eine HTML-Zeichenfolge wie: <html><img src='path/to/my/file'/></html> und konvertieren Sie mit wkhtmltopdf in PDF.

Offensichtlich gibt es hier Abhängigkeiten, daher ist es nicht ideal für eine Produktionsumgebung.