【发布时间】:2017-10-17 17:43:01
【问题描述】:
参数“链接”是图像链接的数组。
function genPDF_fromUrl(link) {
var doc = new jsPDF();
doc.setFontSize(40);
doc.text(80, 25, 'MAP001');
const rtnimg = compute(doc, link);
console.log(rtnimg)
Promise.all(rtnimg).then((success) => {
doc.save("map.pdf");
});
console.log("Finish hello PDF!")
}
function compute(doc, link) {
return link.map(l => {
let x = 0;
let y = 0;
x += 10;
y += 10;
return new Promise((resolve, reject) => {
var genImg = new Image();
genImg.setAttribute('crossOrigin', 'anonymous');
genImg.src = l;
console.log("genimg: ", genImg);
genImg.onload = function () {
console.log("doc: ", doc);
doc.addImage(genImg, 'PNG', x, y, 100, 100);
}
resolve();
});
});
}
结果始终是只有文本“MAP001”的 PDF,我不确定为什么不显示图像。
下面是控制台输出:
genImg: is a img tag like < img crossorigin="anonymous" src="https://cors.now.sh ... a link" >
rtnimg : (33) [Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise, Promise]
Finish hello PDF!
doc: {internal: {…}, addPage: ƒ, setPage: ƒ, insertPage: ƒ, movePage: ƒ, …}
以下是我在 PDF 上仅打印图像的成功尝试。
function genPDF_fromUrl(link) {
var genImg = new Image();
genImg.setAttribute('crossOrigin', 'anonymous');
genImg.src = link[0];
genImg.onload = function () {
var doc = new jsPDF();
doc.setFontSize(40);
doc.text(80, 25, 'MAP001');
doc.addImage(genImg, 'PNG', 0, 0, 100, 100);
doc.save("map.pdf");
}
}
看起来像“var doc = new jsPDF();”必须在 onload 函数中,但我不能对多个图像执行此操作。
【问题讨论】:
-
从
console.log()来看,一切似乎都很好,并给出了预期的输出吗? -
是的,rtnimg 以“解决”状态返回承诺。
-
您是否尝试在您尝试添加图像的
compute()函数中添加一些console.log()?检查genImg等...?请更新您的问题并解释您为调试所做的工作并尝试识别问题。谢谢。
标签: javascript jspdf