2012-01-31 5 views
11

Ho una visualizzazione generata da d3 (una libreria di visualizzazione javascript simile a Protovis o Raphael, che disegna roba usando elementi SVG). Il vis è interattivo, quindi l'utente può interagire e modificarlo. Una volta che l'utente è soddisfatto della sua visualizzazione, vorrei che l'utente potesse esportare questa visualizzazione come PDF. Ho provato diverse librerie HTML in PDF e non funzionano con elementi SVG.Esporta elementi SVG in PDF?

Va bene se la soluzione è lato client o lato server. Sto usando PHP lato server ma potrebbero anche funzionare implementazioni Python o Java.

Supporto browser: Idealmente, supporterà tutti i browser moderni, ma in minima parte mi piacerebbe supportare le versioni più recenti dei browser Firefox e Webkit.

+0

** jsPDF ** può essere utilizzato per aggiungere SVG a un file PDF. Vedi questa conversazione: http://stackoverflow.com/questions/5913338/embedding-svg-in-pdf-exporting-svg-to-pdf-using-js – stackex

risposta

6

Non conosco nessuna forte libreria PDF sul lato client.

Un modo rapido possibile sarebbe quello di inviare il contenuto svg ad un server, e usare qualcosa come batik per java per trasformare lo svg in pdf e poi inviare di nuovo la risposta al client.

Ecco un relativo SO for the converstion.

+2

Highcharts (utilizzando i grafici svg sul lato client) utilizza Batik per generare pdf/jpg in questo modo e funziona molto bene. (Http://www.highcharts.com/documentation/how-to-use#exporting). – eolsson

+0

Wow. grande. Sapevo di Highcharts, ma non sapevo che fossero integrati. Grazie per il link! –

+0

Appena fatto funzionare Batik, grazie per il link a quella discussione. – raviparikh

5

C'è anche wkhtml2pdf, che può rendere qualsiasi webkit può come PDF. Se si desidera eseguire il rendering di una combinazione di SVG e HTML o se si desidera che venga eseguito qualche codice JavaScript prima che venga scattata l'istantanea PDF, è fantastico.

1

PhantomJS può anche url rasterize/HTML a PDF. Lo stesso backend (QTWebKit) con wkhtml2pdf.