參數'鏈接'是圖像鏈接的數組。如何使用jsPDF將多個圖像添加到PDF上
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()'s看起來好嗎?並且給出了預期的輸出結果? – NewToJS
是的,rtnimg回覆承諾狀態'決心'。 –
你有沒有嘗試在你的'compute()'函數中添加一些'console.log()',你嘗試添加圖像?檢查'genImg'等...?請更新您的問題並解釋您所做的調試和嘗試找出問題。謝謝。 – NewToJS