Как исправить проблему со скоростью создания html2pdf.js? - PullRequest
0 голосов
/ 07 января 2019

Сейчас я разрабатываю приложение генератора штрих-кода.

Здесь я использовал html2pdf.js

Я использовал settimeout для массового сохранения.

Но когда я ввожу 13 штрих-кодов и 358 штрих-кодов, скорость рендеринга отличается

13 штрих-кодов: в среднем 280 мс

358 штрих-кодов: в среднем 6500 мс

в случае 13 штрих-кодов

13 barcodes

в случае 358 штрих-кодов

358 barcodes

И мой код ниже

async function timerCallback(){
        var elem = $('#'+elemlist[elemindex]);
        var index = elem.attr('id');
        var value = elem.attr('value');
        console.log(index,value);
        var svgelem = document.getElementById(index);
        var html = svgelem.outerHTML;
        var path = dir+"/"+bar_type+"_"+value+".pdf";
        console.log(path);

        modal.updateModal(elemindex);
        var opt = {
            margin:       0,
            filename:     bar_type+"_"+value+".pdf",
            image:        { type: 'jpeg', quality: 0.98 },
            html2canvas:  { scale: 30 },
            jsPDF:        { orientation : 'l', unit: 'px', format: [$('#'+index).width(), $('#'+index).height()+10]}
        };

        // New Promise-based usage:
        var worker = new html2pdf();
        await worker.set(opt).from(html).outputPdf().then(async function(e){
            var buf = new Buffer(e, 'binary');
            await fs.writeFile(path, buf, function(err) {
                if(err) {
                    return console.log(err);
                }

                console.log("The file was saved!");
            }); 
        });
        setTimeout(() => {
            if(elemindex<elemlist.length)
            {
                timerCallback();
                elemindex++;
            }
            else{
                modal.removeModal();
            }
        }, 1300);
    }

    timerCallback();

Я не знаю, что не так с моим кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...