2014-10-21 41 views
10

Ich arbeite derzeit an einer Schulverwaltungssoftware, die normalerweise den Export von HTML-Inhalten erfordert, die data tables und div tag enthält.wie html2canvas und jspdf zu verwenden, um in pdf auf eine richtige und einfache Weise zu exportieren

Ich habe alle möglichen Mittel versucht, einen Code zu schreiben, der in der Lage sein wird, meine HTML-Daten in einer guten Weise, mit css vorzugsweise zu exportieren. Nachdem ich einige Fragen und Antworten hier überprüft habe, habe ich versucht, spdf zu verwenden, aber kein Glück.

Es hält meine Tabelle Ausrichtung zu zerstören, dann lese ich über html2canvas aber zu ihrer Umsetzung mit jspdf wurde mein Problem, würde Sie mag den Inhalt erfassen, wenn ein div-Tag mit html2canvas dann die Leinwand zu jspdf senden, um die Leinwand zu exportieren als pdf.

Hier ist mein Code unten:

<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> 

hier ist der js Code

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

Können Sie das div auf der Leinwand mit html2canvas anzeigen? –

+0

nein ich kann nicht, der obige jquery Code tut nichts, wenn ich ihn –

+0

bitte ich brauche Hilfe oder Vorschläge –

Antwort

18

ich jsfiddle für Sie gemacht haben.

<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/

Geprüft Chrome38, IE11 und Firefox 33. Es scheint Probleme mit Safari zu haben. Allerdings hat Andrew es in Safari 8 auf Mac OSx funktioniert, indem er von PNG zu JPEG wechselte. Einzelheiten finden Sie in seinem Kommentar unten.

+1

Sweet! Das funktioniert großartig in Chrome. In Safari erhalte ich jedoch nur eine leere Seite, wenn ich auf den Download-Button klicke. –

+1

Danke Andrerw. Ist Safari 5.1.7? Es scheint, Safari-Version 6 und 7 unterstützt Windows nicht? JSpdf hat einige Probleme mit safa.http: //stackoverflow.com/questions/21755171/jspdf-not-working-on-safari Haben Sie versucht, doc.output ('dataurlnewwindow') ;? –

+1

Ich habe es in Safari 8 unter OS X getestet. Ich frage mich, ob das Problem darin besteht, die Canvas-Daten als PNG-Daten zu speichern. Ich hatte Probleme bei der Arbeit mit Safari in einem Projekt, an dem ich gerade arbeite, aber dann wechselte ich zu JPEG und es funktionierte plötzlich. –

Verwandte Themen