我正在使用下面的代码来创建一个PDF格式的图像,当用户点击“下载”按钮时。它几乎工作正常,但问题是它生成了两个PDF文件,而不是一个。
(function($) {
$(document).ready(function() {
$('#downloadPDF').click(function() {
var doc = new jsPDF("p", "mm", "a4");
function getDataUri(url, callback) {
var image = new Image();
image.onload = function() {
var canvas = document.createElement('canvas');
canvas.width = this.naturalWidth; // or 'width' if you want a special/scaled size
canvas.height = this.naturalHeight; // or 'height' if you want a special/scaled size
canvas.getContext('2d').drawImage(this, 0, 0);
// Get raw image data
callback(canvas.toDataURL('image/png').replace(/^data:image\/(png|jpg);base64,/, ''));
// ... or get as Data URI
callback(canvas.toDataURL('image/png'));
};
image.src = url;
}
// Usage
getDataUri('/cover.png', function(dataUri) {
console.log('RESULT:', dataUri);
doc.addImage(dataUri, 'png', 0, 0, 210, 297, undefined, 'FAST');
doc.save('download.pdf')
});
})
})
})(jQuery)
我觉得这是个循环,但我不知道怎么解。
1条答案
按热度按时间erhoui1w1#
您似乎调用了
callback
两次,一次是在注解// Get raw image data
之后,另一次是在// ... or get as Data URI
之后。根据您想要的情况删除其中一个调用,它应该可以解决问题。