jspdf saves document before images load
up vote
0
down vote
favorite
I am trying to save multiple large base64
images to a pdf
file
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);
}
however, img.onLoad
seems to be async
, causing pdfFile.output
to run prematurely and outputting blank spaces into the pdf.
how can i know when the images are actually loaded and added to pdf, so that i can save the pdf file at the correct time?
angular image jspdf
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
up vote
0
down vote
favorite
I am trying to save multiple large base64
images to a pdf
file
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);
}
however, img.onLoad
seems to be async
, causing pdfFile.output
to run prematurely and outputting blank spaces into the pdf.
how can i know when the images are actually loaded and added to pdf, so that i can save the pdf file at the correct time?
angular image jspdf
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to save multiple large base64
images to a pdf
file
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);
}
however, img.onLoad
seems to be async
, causing pdfFile.output
to run prematurely and outputting blank spaces into the pdf.
how can i know when the images are actually loaded and added to pdf, so that i can save the pdf file at the correct time?
angular image jspdf
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I am trying to save multiple large base64
images to a pdf
file
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);
}
however, img.onLoad
seems to be async
, causing pdfFile.output
to run prematurely and outputting blank spaces into the pdf.
how can i know when the images are actually loaded and added to pdf, so that i can save the pdf file at the correct time?
angular image jspdf
angular image jspdf
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited 1 hour ago


Sarthak Aggarwal
63617
63617
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 2 hours ago
masterofz
12
12
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
masterofz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
masterofz is a new contributor. Be nice, and check out our Code of Conduct.
masterofz is a new contributor. Be nice, and check out our Code of Conduct.
masterofz is a new contributor. Be nice, and check out our Code of Conduct.
masterofz is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371553%2fjspdf-saves-document-before-images-load%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown