exportPDF() {
const pdf = new jsPDF('p', 'mm', 'a4');
const printContent = document.getElementById('print-content');
html2canvas(printContent).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const imgWidth = 210; // A4纸的宽度(单位:mm)
const pageHeight = 297; // A4纸的高度(单位:mm)
const imgHeight = Math.ceil((canvas.height * imgWidth) / canvas.width);
let heightLeft = imgHeight;
let position = 0;
const getPageContent = () => {
pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
// 如果内容高度不超出一页,直接保存并退出
if (heightLeft <= pageHeight) {
pdf.save('export.pdf');
return;
}
pdf.addPage();
heightLeft -= pageHeight;
position = -heightLeft*1.5;
getPageContent();
};
getPageContent();
});
},
-
在添加图像之前,先判断内容高度是否超出一页。如果内容高度不超出一页,直接保存PDF并退出递归。
-
在创建新页面之前,先检查是否还有剩余的高度需要分页。如果有剩余高度,则调用
pdf.addPage()
添加新页面。 -
将
position
设置为-heightLeft
,以确保下一页从当前页的左下方开始截断。