Я пытаюсь сохранить несколько больших 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 в нужное время?