2013-10-09 12 views
5

Sto provando a convertire una pagina HTML in PDF. La conversione funziona bene con PhantomJS, tuttavia, phantomjs non sembra supportare CSS3 columns.Phantomjs supporta le colonne CSS3 per la conversione da HTML a PDF?

Il comando sto correndo (HTML-> pdf)

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

La risultante PDF non onorare lo stile CSS colonne, la visualizzazione di un elenco verticale di voci, invece.

Tuttavia, eseguendo il comando seguente per convertire HTML-> immagine fa onore allo stile Colonne CSS3:

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

qualcuno può confermare che questo è il comportamento previsto?

BTW, ho provato a utilizzare wkhtmltopdf ma questo does/will not be supporting CSS Columns.

Molte grazie

+0

Curioso se hai mai trovato qualcosa che supportava le colonne. Mi sto imbattendo in problemi simili, e mentre wkhtmltopdf ha funzionato molto bene, mi piacerebbe comunque avere il supporto per le colonne. – MikeTheReader

+0

@ Dante617 No, nulla di open source supporta le colonne CSS3. Ho provato Phantom JS e wkhtmltopdf inutilmente. Entrambi i generatori sono ottime librerie. Phantom è leggermente migliore in termini di velocità. – singh1469

+0

Grazie. Sì, anche Phantom JS è stato quello con cui ho finito, visto che aveva un buon supporto per il float, e l'ho usato per imitare le colonne. – MikeTheReader

risposta

3

credo che la versione di WebKit su cui si basa PhantomJs probabilmente non sta attuando le colonne CSS3, anche se i principali browser WebKit (Safari e Chrome) entrambi fanno. Questo link

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

e questo link

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

si libererà tanto quanto la luce in quanto v'è su questo argomento, per quanto ne so.

+0

Sono arrivato a questa conclusione. Grazie molto. – singh1469

+0

Vota per il problema qui: https://github.com/ariya/phantomjs/issues/11821. Il "work around" è di convertire prima un'immagine – Ryan

2

Sono giunto alla stessa conclusione di @Stolli. Ma come soluzione, ho fatto quanto segue:

Usa le colonne CSS3 e converti l'html in un'immagine usando wkhtmltoimage che viene fornito con la libreria wkhtmltopdf. Ciò manterrà la struttura delle colonne CSS3.

Quindi incorporare l'immagine generata in una stringa html come: <html><img src='path/to/my/file'/></html> e convertire in PDF utilizzando wkhtmltopdf.

Ovviamente, qui ci sono molte dipendenze, quindi non è l'ideale per un ambiente di produzione.