使用html2canvas渲染所有div时如何保存执行回调/操作

时间:2018-07-27 05:08:06

标签: javascript jquery jspdf html2canvas

我正在遍历div列表,将它们转换为画布,然后将其添加到jspdf中。

完成所有这些操作后,我将它们保存到磁盘中。

   function exportDataTablesAsPDF() {
        var dataTablesToBeExported = $('.js-exportdiv');


        $.each(dataTablesToBeExported, function (index, element) {

            html2canvas(element).then(function (canvas) {
                var img = canvas.toDataURL("image/png");
                masterPdf.addImage(img, 'PNG', 0, 0,canvas.width,canvas.height);
            });
        });
       masterPdf.save("Test.pdf");
    }

但是这里的问题是,masterPdf.save()在所有画布回调完成之前执行。

在将所有图像添加到文档之前,将下载pdf。有没有办法,我可以等待所有then(canvas)完成并下载pdf。

1 个答案:

答案 0 :(得分:3)

添加完所有图像后,您可以尝试致电masterPdf.save

类似

 function exportDataTablesAsPDF() {
        var dataTablesToBeExported = $('.js-exportdiv');
        var numberOfImages = dataTablesToBeExported.length;


        $.each(dataTablesToBeExported, function (index, element) {

            html2canvas(element).then(function (canvas) {
                var img = canvas.toDataURL("image/png");
                masterPdf.addImage(img, 'PNG', 0, 0,canvas.width,canvas.height);
                if (index + 1 == numberOfImages) { masterPdf.save("Test.pdf"); }
            });
        });
    }