正文
使用html2canvas和jspdf将页面保存位pdf
<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js" ></script>
<script src="https://unpkg.com/html2canvas@1.4.1/dist/html2canvas.js" ></script>
<button id="topdf">保存为pdf</button>
<div style="width: 600px; margin: 0 auto" id="box">
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>1
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>2
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>3
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>4
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>5
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>6
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>7
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>8
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>9
<div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>10
</div>
<script>
var saveBtn = document.querySelector('#topdf');
var target = document.querySelector('#box');
saveBtn.addEventListener('click', ()=>{
html2canvas(target).then((canvas)=>{
const pageData = canvas.toDataURL('image/jpeg', 1.0);
const doc = new jspdf.jsPDF({
orientation: 'p',
unit: 'pt',
format: 'a4',
});
const a4_width = 595.28;
const a4_height = 841.89;
const contentWidth = canvas.width;
const contentHeight = canvas.height;
const pageHeight = (contentWidth / a4_width) * a4_height;
let remainedHeight = contentHeight;
const imgHeight = (a4_width / contentWidth) * contentHeight;
remainedHeight -= pageHeight;
let position = 0;
doc.addImage(pageData, 'JPEG', 0, position, a4_width, imgHeight);
while (remainedHeight >= 0) {
position = position + a4_height;
doc.addPage();
doc.addImage(pageData, 'JPEG', 0, -position, a4_width, imgHeight);
remainedHeight -= pageHeight;
}
doc.save(`下载.pdf`);
})
})
</script>
复制