const btn = document.getElementById('btn');
const pages = document.querySelectorAll('.page');
btn.addEventListener('click', async () => {
let jsPD = new jsPDF();
// one page
// html2PDF(pages, {
// jsPDF: {
// format: 'a4',
// dpi: 400,
// },
// imageType: 'image/jpeg',
// output: 'my.pdf',
// html2canvas: {
// scrollX: 0,
// scrollY: -window.scrollY,
// scale: 5,
// dpi: 400,
// quality: 4,
// }, margin: {
// top: 24,
// right: 24,
// bottom: 24,
// left: 24,
// },
// success: function (pdf) {
// // pdf.save(this.output)
// window.open(pdf.output('bloburl'))
// }
// });
// more page version
for await (const page of pages) {
console.log(page)
const pdf = await html2PDF(page, {
jsPDF: {
format: 'a4',
dpi: 400,
},
imageType: 'image/jpeg',
output: 'my.pdf',
html2canvas: {
scrollX: 0,
scrollY: -window.scrollY,
scale: 5,
dpi: 400,
quality: 4,
}, margin: {
top: 24,
right: 24,
bottom: 24,
left: 24,
},
success: function (pdf) {
// pdf.save(this.output)
// window.open(pdf.output('bloburl'))
jsPD.addPage(pdf.output())
}
});
}
window.open(jsPD.output('bloburl'))
});
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<button id="btn">Generate</button>
<div class="page" style="width: 210mm;color: black;background: white; margin: 0 auto">
<div class="">
<h3 style="margin: 0">PDF for Test</h3>
<img src="assets/img2.jpg" style="max-width: 100%" alt="">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam cupiditate dolores est,
pariatur perferendis
quia quis quos recusandae similique veritatis Ad delectus doloremque est fugit id molestias nesciunt, qui
tenetur?
</div>
</div>
<div class="break-before">
<p style="margin: 0">Here is some content for testing!!</p>
<h3>PDF for Test</h3>
<img src="assets/img2.jpg" style="max-width: 100%" alt="">
<p style="margin: 0">Here is some content for testing!!</p>
<h3 style="margin: 0">PDF for Test</h3>
</div>
<div class="break-before">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam cupiditate dolores est,
pariatur perferendis
quia quis quos recusandae similique veritatis! Ad delectus doloremque est fugit id molestias nesciunt, qui
tenetur?
</div>
</div>
<div class="page" style="width: 210mm;color: black;background: white; margin: 0 auto">
<div class="">
<h3 style="margin: 0">PDF for Test</h3>
<img src="assets/img2.jpg" style="max-width: 100%" alt="">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam cupiditate dolores est,
pariatur perferendis
quia quis quos recusandae similique veritatis Ad delectus doloremque est fugit id molestias nesciunt, qui
tenetur?
</div>
</div>
<div class="break-before">
<p style="margin: 0">Here is some content for testing!!</p>
<h3>PDF for Test</h3>
<img src="assets/img2.jpg" style="max-width: 100%" alt="">
<p style="margin: 0">Here is some content for testing!!</p>
<h3 style="margin: 0">PDF for Test</h3>
</div>
<div class="break-before">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam cupiditate dolores est,
pariatur perferendis
quia quis quos recusandae similique veritatis! Ad delectus doloremque est fugit id molestias nesciunt, qui
tenetur?
</div>
</div>
<div class="page" style="width: 210mm;color: black;background: white; margin: 0 auto">
<div class="">
<h3 style="margin: 0">PDF for Test</h3>
<img src="assets/img2.jpg" style="max-width: 100%" alt="">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam cupiditate dolores est,
pariatur perferendis
quia quis quos recusandae similique veritatis Ad delectus doloremque est fugit id molestias nesciunt, qui
tenetur?
</div>
</div>
<div class="break-before">
<p style="margin: 0">Here is some content for testing!!</p>
<h3>PDF for Test</h3>
<img src="assets/img2.jpg" style="max-width: 100%" alt="">
<p style="margin: 0">Here is some content for testing!!</p>
<h3 style="margin: 0">PDF for Test</h3>
</div>
<div class="break-before">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam cupiditate dolores est,
pariatur perferendis
quia quis quos recusandae similique veritatis! Ad delectus doloremque est fugit id molestias nesciunt, qui
tenetur?
</div>
</div>
</body>
<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/html2canvas.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jspdf-html2canvas@latest/dist/jspdf-html2canvas.min.js"></script>
<!--pure jspdf-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.debug.js"></script>
<script src="main.js"></script>
</html>