jspdf сохраняет документ перед загрузкой изображений - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь сохранить несколько больших base64 изображений в pdf файле

exportPdfv3p3(imgPath:string, x:number, y:number, width:number, height:number)
{
    var pdfFile = this.pdfItem;
    var localNumImagesLoaded = this.numImagesLoaded + 1;
    var totalNumImages = this.numImages;

    var img = new Image;
    img.src = imgPath;
    var pdfWidth = pdfFile.internal.pageSize.getWidth();

    img.onload = function()
    {
        pdfFile.addImage(img, 'PNG', pdfWidth - width - 5, y, width, height);

        console.log("localNumImagesLoaded",localNumImagesLoaded);
        if (localNumImagesLoaded > totalNumImages)
            alert("numImagesLoaded desync (too many images)");
        else if (localNumImagesLoaded < totalNumImages){}
        else // (localNumImagesLoaded == numImages)
        {
            // Total page number plugin only available in jspdf v1.0+
            if (typeof pdfFile.putTotalPages === 'function') 
            {
                pdfFile.putTotalPages(2);
            }
            // pdfFile.save("test.pdf");
            pdfFile.output('datauri');
        }
    };
    ++this.numImagesLoaded;
    console.log("this.numImagesLoaded", this.numImagesLoaded);
}

, однако img.onLoad выглядит как async, что приводит к преждевременному запуску pdfFile.output и выводитпробелы в PDF.

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

...