简体   繁体   中英

JSPDF convert two DIVs to PDF of two pages

I have page where there is DIV and download button, the download button convert the div to pdf by JSPDF and downloads it, now the page contains 2 DIVs with the same size but different content, and I need the download button to create 2 pages PDF file and download it

the JS

$('#print').click(function (e) { 
    e.preventDefault();
    let HTML_Width = $(".report").width();
    let HTML_Height = $(".report").height();
    let top_left_margin = 1;
    let PDF_Width = HTML_Width + (top_left_margin * 2);
    let PDF_Height = (PDF_Width * 1.5) + (top_left_margin * 2);
    let canvas_image_width = HTML_Width;
    let canvas_image_height = HTML_Height;
    let totalPDFPages = Math.ceil(HTML_Height / PDF_Height) - 1;
    html2canvas($(".report")[0]).then(function (canvas) {
        let imgData = canvas.toDataURL("image/jpeg", 1.0);
        let pdf = new jsPDF('p', 'pt', [PDF_Width, PDF_Height]);
        pdf.addImage(imgData, 'JPG', top_left_margin, top_left_margin, canvas_image_width, 
canvas_image_height, 'FAST');
        for (let i = 1; i <= totalPDFPages; i++) {
            pdf.addPage(PDF_Width, PDF_Height);
            pdf.addImage(imgData, 'JPG', top_left_margin, -(PDF_Height * i) + (top_left_margin * 
4), canvas_image_width, canvas_image_height);
        }
        pdf.save("Report.pdf");
        $(".html-content").hide();
    });

});

the first div selector '.report', and the second div selector '#report-two' can anyone give me hand please?

You can try with:

page-break-before: always;

Example:

 @media print { .new-page { page-break-before: always; } }
 <div> <h1>1 Page</h1> <p> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Porro unde voluptas pariatur, sapiente voluptatem dignissimos ratione provident tenetur exercitationem itaque suscipit incidunt excepturi iusto consectetur odit reiciendis sunt quibusdam. Vitae? </p> </div> <div class="new-page"> <h1>2 Page</h1> <p> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Porro unde voluptas pariatur, sapiente voluptatem dignissimos ratione provident tenetur exercitationem itaque suscipit incidunt excepturi iusto consectetur odit reiciendis sunt quibusdam. Vitae? </p> </div> <button onClick="window.print()">Print pages</button>

Otherwise if above not help try setting fixed height & width. With JsPDF you need to have 600px width and 840px height for A4 portrait orientation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM