html2pdf的使用
html2pdf在https://github.com/eKoopmans/html2pdf.js说明的很清楚了,下面给出一个例子
const handleDownload = () => {
let element = document.getElementById('elementToPrint');
let opt = {
margin: 0,
filename: `${title}-${name}-${reportDate.replace(/-/g, '.')}.pdf`,
image: { type: 'jpeg', quality: 1 },
html2canvas: {
scale: 2,
allowTaint: false,
useCORS: true,
ignoreElements: (element: { id: string }) => {
if (element.id === 'ignoreBtnElement') return true;
return false;
},
},
pagebreak: { mode: 'avoid-all', after: '#levelAnalysis' },
enableLinks: true, // 支持文本中放链接,可点击跳转
};
html2pdf().set(opt).from(element).save();
};
html2Canvas+jspdf.js实现长图不分页
html2pdf不能实现在一页输出长图,与产品需求不符,故使用
const handleDownload = () => {
let element = document.getElementById('elementToPrint');
if (element) {
let width = element.offsetWidth / 4;
let height = element.offsetHeight / 4;
let limit = 14400;
if (height > limit) {
let contentScale = limit / height;
height = limit;
width *= contentScale;
}
html2canvas(element, {
scale: 2,
useCORS: true,
allowTaint: false,
ignoreElements: (element: { id: string }) => {
if (element.id === 'ignoreBtnElement') return true;
return false;
}
}).then(canvas => {
let context: any = canvas.getContext('2d');
let orientation;
if (context) {
context.mozImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.msImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
}
let pageData = canvas.toDataURL('image/jpg', 1.0);
let img = new Image();
img.src = pageData;
img.onload = function () {
img.width /= 2;
img.height /= 2;
img.style.transform = 'scale(0.5)';
let pdf;
orientation = width > height ? 'l' : 'p'
// eslint-disable-next-line
pdf = new jsPDF(orientation , 'mm', [
width,
height
]);
pdf.addImage(
pageData,
'jpeg',
0,
0,
width,
height
);
pdf.save(`${originTitle}-${name}-${reportDate.replace(/-/g, '.')}.pdf`);
};
});
}
};