js实现html转成pdf代码

dhso
2018/06/14 14:58
统计中

引入依赖

import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';

html2pdf方法

html2pdf(fileName) {
        fileName = typeof (fileName) == 'string' ? fileName : `pdf_${new Date().getTime()}`;
        html2canvas(document.body).then(function (canvas) {
            let contentWidth = canvas.width,
                contentHeight = canvas.height,
                //一页pdf显示html页面生成的canvas高度;
                pageHeight = contentWidth / 592.28 * 841.89,
                //未生成pdf的html页面高度
                leftHeight = contentHeight,
                //页面偏移
                position = 0,
                //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
                imgWidth = 595.28,
                imgHeight = 592.28 / contentWidth * contentHeight,
                pageData = canvas.toDataURL('image/jpeg', 1.0),
                pdf = new jsPDF('', 'pt', 'a4');
                //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
                //当内容未超过pdf一页显示的范围,无需分页
            if (leftHeight < pageHeight) {
                pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
            } else {
                while (leftHeight > 0) {
                    pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                    leftHeight -= pageHeight;
                    position -= 841.89;
                    //避免添加空白页
                    if (leftHeight > 0) {
                        pdf.addPage();
                    }
                }
            }
            pdf.save(`${fileName}.pdf`);
        });
    }

本文为 dhso 原创

发布在 http://blog.minws.com/jsshi-xian-htmlzhuan-cheng-pdfdai-ma/

如有转载,请标明来源!

作者信息
姓名:dhso
热评文章
最新评论
文章概览