// 图片base64转pdf并下载
const base64toPDF = (data, name) => {
let imgData = `data:image/jpg;base64,${data}`;
let img = new Image();
img.src = imgData;
img.onload = function () {
let contentWidth = img.width;
let contentHeight = img.height;
//一页pdf显示html页面生成的canvas高度;
let pageHeight = (contentWidth / 1487) * 2105;
console.log('pageHeight:', pageHeight);
//未生成pdf的html页面高度
let leftHeight = contentHeight * 0.9;
//页面偏移
let position = 0;
//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
let imgWidth = 1487;
let imgHeight = (1487 / contentWidth) * contentHeight;
let pdf = new jsPDF('p', 'px', [1487, 2105]);
if (leftHeight < pageHeight) {
// 在pdf.addImage(pageData, 'JPEG', 左,上,宽度,高度)设置在pdf中显示;
pdf.addImage(imgData, 'JPEG', 120, 50, imgWidth * 0.85, imgHeight * 0.85);
} else {
// 分页
while (leftHeight > 10) {
pdf.addImage(imgData, 'JPEG', 120, position, imgWidth * 0.85, imgHeight * 0.85);
leftHeight -= pageHeight;
position -= 2180;
//避免添加空白页
if (leftHeight > 10) {
pdf.addPage();
}
}
}
let pdf64 = pdf.output('datauristring').replace('data:application/pdf;base64,', '');
//pdf预览
let blob = base64ToBlob(pdf64);
//获取当前url,直接放到iframe就能用,下载同理。直接将blobURL放到浏览器可以预览
let blobURL = window.URL.createObjectURL(blob);
var link = document.createElement('a');
document.body.appendChild(link);
link.href = blobURL;
link.download = `${name}.pdf`;
link.click();
// window.URL.revokeObjectURL(urldata);
link.remove();
message.success('下载成功!');
};
};
图片base64转A4尺寸pdf,重命名并下载
于 2023-04-06 16:44:16 首次发布