Создание pdf с помощью jspdf и html2canvas. Проблемы с отложенным jquery

#javascript #jquery #pdf #jspdf #html2canvas

#javascript #jquery #PDF #jspdf #html2canvas

Вопрос:

Я пытаюсь показать pdf-файл со всеми строками, которые отмечены флажком. Когда я читаю, библиотеки html2canvas работают асинхронно, и я получаю пустой PDF-файл, потому что я печатаю до создания.

Я пытаюсь использовать метод отложенного jquery, но не могу получить результат.

Мой сценарий:

         var titulo;
        var pdf = new jsPDF('P','mm','a4');

        function printSelector(tabla){
            var posicionY = 50;
            var conteo = 0;

            pdf.setLineWidth(0.5);
            pdf.line(45, 33, 160, 33);
            pdf.setFontSize(11);
            debugger;
            var deferreds = $("input:checkbox:checked").map(function(){
                var deferred = $.Deferred();

                var row = this.parentNode.parentNode.parentNode;
                conteo = conteo   1;
                //print(row ,posicionY);

                // GET VARS FROM ROW
                $("#canvas").JsBarcode(texto, {
                    fontSize:10,
                    width:1
                });
                html2canvas($("#canvas"), {
                    onrenderer: function(canvas) {
                        //PDF BUILD WITH jsPDF

                        posicionY = posicionY   20;
                        if (posicionY>=3490){
                            pdf.addPage();
                            posicionY = 50;
                        }

                        deferred.resolve();
                    }
                });
                if(tabla.id=='tablaCreacion'){
                    location.href='/print/' rack.cells[6].innerText;
                }
                return deferred.promise();
            });

            $.when.apply($, deferreds.get()).then(function() {
                pdf.autoPrint();
                if (!window.focus) return true;
                window.open( pdf.output('bloburi'), null, 'width=800,height=600,scrollbars=yes'); 
                return false;
            });
        };
  

Комментарии:

1. Может быть, ваша проблема в опечатке onrenderer вместо onrendered ?

2. @maximkou Я потерял много времени на поиск ошибки в другом месте вместо того, чтобы смотреть основы: P Спасибо, maximkou, ваши ответы решают мою проблему.