2016-06-19 14 views
-2

In diesem Beispiel wird das Replikat der angehängten Fiddle ausgeführt (wo das Beispiel ordnungsgemäß ausgeführt wird). Ich bin erstaunt, das gleiche zu reproduzieren ist Wurffehler. Warum?Beispiel für HTML zu PDF-Konverter, der einen unerwarteten Fehler erhält

HTML:

<html> 
<head> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js"></script> 
<script> 
var doc = new jsPDF(); 
var specialElementHandlers = { 
    'body': function (element, renderer) { 
     return true; 
    } 
}; 

$('button').click(function() { 
    doc.fromHTML($('#content').html(), 15, 15, { 
     'width': 170, 
      'elementHandlers': specialElementHandlers 
    }); 
    doc.save('sample-file.pdf'); 
}); 
</script> 
</head> 

<body> 
    <button>Click</button> 
    <div class="container"> 
     Hello! 
    </div> 
</body> 
</html> 

jSFiddle

http://jsfiddle.net/5ud8jkvf/

ERROR:

enter image description here

Notes:

  1. As fiddle is running properly, this example must also run without any error.
  2. There is no attachment of jQuery file in fiddle, so I dont think jQuery is required or missing in this example.
  3. Even on adding jQuery files - Error is gone - but pdf is not getting downloaded.
+0

abgesehen von der jQuery hinzugefügt werden - und ich stimme mit allen Beiträgen re, dass - es ist der Behälter erfordert mit der zu speichernde Text muss die ID "content" haben, da dies in der Funktion so genannt wird. Ich habe die Lösung von @ankit unten verwendet und festgestellt, dass, wenn y dem Container eine ID hinzugefügt wird, das Dokument als PDF mit dem darin enthaltenen Text gespeichert wird. Wenn der .container die ID nicht hat - dann speichert das pdf Dokument, aber wird keinen Text darin haben – gavgrif

+0

@peterson erhalten Sie irgendein Problem? – ankit

Antwort

2

Versuchen Sie, diese

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js"></script> 
 
<script> 
 
var doc = new jsPDF(); 
 
var specialElementHandlers = { 
 
    'body': function (element, renderer) { 
 
     return true; 
 
    } 
 
}; 
 
$(document).ready(function(){ 
 
$('button').click(function() { 
 
    doc.fromHTML($('#content').html(), 15, 15, { 
 
     'width': 170, 
 
      'elementHandlers': specialElementHandlers 
 
    }); 
 
    doc.save('sample-file.pdf'); 
 
}); 
 
}); 
 
</script> 
 
</head> 
 

 
<body> 
 
    <button>Click</button> 
 
    <div class="container"> 
 
     Hello! 
 
    </div> 
 
</body> 
 
</html>

+0

danke - ich mag das und habe es für den zukünftigen Gebrauch kopiert. Einzige Sache - Es erfordert, dass der Container mit dem zu speichernden Text die ID "Inhalt" hat, da dies in der Funktion so genannt wird. Wenn Sie dem .container eine ID hinzufügen, wird das Dokument als PDF mit dem darin enthaltenen Text gespeichert. Wenn der Container nicht die ID hat, wird das PDF-Dokument gespeichert, enthält jedoch keinen Text. – gavgrif

+0

Danke Kumpel! Das funktioniert großartig. Auch mich hat eine so wunderbare einzigartige Frage überrascht, die eine Stimme bekommen hat! Leider !!! – Deadpool

+0

"Probieren Sie dies aus: * code *" beantwortet nicht die Frage von OP ** warum? ** – usr2564301

2

Die Ursache ist, dass Sie jQuery hinzufügen müssen, wie folgt aus:

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
</head> 
4

Die Konsole liegt dies nicht tut. Die Geige hat Abhängigkeit von jQuery.

jQuery require

Ihr Markup erfordert jQuery. In jQuery Code ...

<html> 
<head> 
    <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js"></script>