2014-10-21 19 views
10

Attualmente sto lavorando a un software di gestione della scuola che di solito richiede l'esportazione di contenuti HTML contenenti data tables e div tag.come utilizzare html2canvas e jspdf per esportare in pdf in modo corretto e semplice

Ho provato tutti i mezzi possibili per scrivere un codice che sarà in grado di esportare i miei dati html in un modo buono, con css preferibilmente. Dopo aver controllato alcune domande e risposte qui, ho provato a usare spdf, ma senza fortuna.

Mantiene distruggere la mia allineamento tavolo, poi ho letto di html2canvas ma per la sua attuazione con jspdf era il mio problema, vorrei catturare il contenuto se un tag div con html2canvas quindi inviare la tela per jspdf esportare la tela come PDF.

Ecco il mio codice qui sotto:

<script src="assets/js/pdfconvert/jspdf.js"></script> 
<script src="assets/js/pdfconvert/jspdf.plugin.from_html.js"></script> 
<script src="assets/js/pdfconvert/jspdf.plugin.split_text_to_size.js"></script> 
<script src="assets/js/pdfconvert/jspdf.plugin.standard_fonts_metrics.js"> </script> 
<script src="assets/js/pdfconvert/jspdf.plugin.addhtml.js"></script> 
<script src="assets/js/pdfconvert/filesaver.js"></script> 
<script src="assets/js/pdfconvert/jspdf.plugin.cell.js"></script> 
<script src="assets/js/pdfconvert/html2canvas.js"></script> 
<script src="assets/js/pdfconvert/jspdf.plugin.addimage.js"></script> 

Ecco il codice js

var pdf = new jsPDF('p', 'pt', 'letter'); 
pdf.addHTML($('#ElementYouWantToConvertToPdf')[0], function() { 
pdf.save('Test.pdf'); 
}); 
+0

Sei in grado di mostrare il div sulla tela usando html2canvas? –

+0

no non posso, il codice jquery sopra non fa nulla quando lo eseguo –

+0

per favore ho bisogno di aiuto o suggerimenti –

risposta

18

Ho fatto un jsfiddle per voi.

<canvas id="canvas" width="480" height="320"></canvas> 
     <button id="download">Download Pdf</button> 

'

 html2canvas($("#canvas"), { 
      onrendered: function(canvas) {   
       var imgData = canvas.toDataURL(
        'image/png');    
       var doc = new jsPDF('p', 'mm'); 
       doc.addImage(imgData, 'PNG', 10, 10); 
       doc.save('sample-file.pdf'); 
      } 
     }); 

jsfiddle: http://jsfiddle.net/rpaul/p4s5k59s/5/

testato in Chrome38, IE11 e Firefox 33. Sembra avere problemi con Safari. Tuttavia, Andrew ha funzionato in Safari 8 su Mac OSx passando a JPEG da PNG. Per i dettagli, vedi il suo commento qui sotto.

+1

Sweet! Funziona alla grande in Chrome. In Safari, però, ottengo solo una pagina vuota quando faccio clic sul pulsante di download. –

+1

Grazie Andrerw. Is è Safari 5.1.7? Sembra che Safari versione 6 e 7 non supporti Windows? JSpdf ha alcuni problemi con safari.http: //stackoverflow.com/questions/21755171/jspdf-not-working-on-safari Hai provato doc.output ('dataurlnewwindow') ;? –

+1

L'ho provato su Safari 8 su OS X. Mi chiedo se il problema potrebbe essere con il salvataggio dei dati della tela come dati PNG. Stavo avendo problemi nel far funzionare le cose in Safari su un progetto a cui sto lavorando, ma poi sono passato a JPEG e all'improvviso ha iniziato a funzionare. –

Problemi correlati