我正在尝试将我的网页转换为PDF。
我有两个页面被转换为base64编码图像,然后使用jsPDF添加到PDF中。它工作正常。
我的问题是我希望下面的代码在保存之前等待处理domtoimage函数。
var doc = new jsPDF();
//First
domtoimage.toPng(document.getElementById('page'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
doc.addPage();
});
//Second
domtoimage.toPng(document.getElementById('page2'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280); });
//Third
doc.save("file.pdf");
我找到了这个解决方案:https://api.jquery.com/jquery.when/但由于我不熟悉承诺,所以我不知道如何让它发挥作用。
感谢您的帮助。
答案 0 :(得分:1)
试试。
var doc = new jsPDF();
//First
domtoimage.toPng(document.getElementById('page'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
doc.addPage();
domtoimage.toPng(document.getElementById('page2')).then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
doc.save("file.pdf");
});
});
答案 1 :(得分:1)
你可以试试这个:
var doc = new jsPDF();
//First
domtoimage.toPng(document.getElementById('page'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
doc.addPage();
//Second
domtoimage.toPng(document.getElementById('page2'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
//Third
doc.save("file.pdf");
});
});
答案 2 :(得分:1)
您可以使用$ .when()来实现此目的。
function func1(){
domtoimage.toPng(document.getElementById('page'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
doc.addPage();
});
}
function func2(){
domtoimage.toPng(document.getElementById('page2'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280); });
}
$.when(func1(), func2())
.done(function(){
doc.save("file.pdf");
}).fail(function(){
console.log('failure');
});
答案 3 :(得分:1)
尝试以下内容:
var doc = new jsPDF();
$.when(fn1()).done(function (v1) {
console.log(v1);
});
//First
function fn1() {
domtoimage.toPng(document.getElementById('page'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
doc.addPage();
// Call next function.
$.when(fn2()).done(function(v2) {
console.log(v2);
});
});
return 'success';
}
//Second
function fn2() {
domtoimage.toPng(document.getElementById('page2'))
.then(function (dataUrl) {
doc.addImage(dataUrl, 'png', 15, 10, 180, 280);
// Call next function.
$.when(fn3()).done(function(v3) {
console.log(v3);
});
});
return 'success';
}
//Third
function fn3() {
doc.save("file.pdf");
return 'success';
}