ticket_list = [0, 1, 2];
function genPDF(){
var deferreds = [];
var doc = new jsPDF();
for (let i = 0; i < ticket_list.length; i++) {
var deferred = $.Deferred();
deferreds.push(deferred.promise());
genCanvas(i, doc, deferred);
}
$.when.apply($, deferreds).then(function () { // executes after adding all images
doc.save('test.pdf');
});
}
function genCanvas(i, doc, deferred){
html2canvas(document.getElementById("div"+i), {
onrendered: function(canvas){
var img = canvas.toDataURL();
doc.addImage(img, 'JPEG', 0, 10, 350, 125, 'center');
doc.addPage();
deferred.resolve();
}
});
}
$('#download').click(function(){
genPDF();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1">
<p>A</p>
</div>
<div id="div2">
<p>B</p>
</div>
<div id="div3">
<p>C</p>
</div>
There appears no error when I run this script, but the pdf file is strange.
It loops 3 times but only the same div gets rendered 3 times.
I don't know what should I do.
Anybody help me.