通过html2canvas将html页面转换为图片,再将图片通过一定比例缩放生成pdf,点击触发下载事件。
//依赖
<script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
<script src="https://linwalker.github.io/render-html-to-pdf/js/jsPdf.debug.js" type="text/javascript" charset="utf-8"></script>
//下载生成的pdf文件
document.getElementById('download').onclick = function() {
this.parentNode.removeChild(this);html2canvas(document.body, {
onrendered:function(canvas) {
var contentWidth = canvas.width;
var contentHeight = canvas.height;
var pageHeight = contentWidth / 592.28 * 841.89;
var leftHeight = contentHeight;
var position = 0;
var imgWidth = 595.28;
var imgHeight = 592.28/contentWidth * contentHeight;
var pageData = canvas.toDataURL('image/jpeg', 1.0);
var pdf = new jsPDF('', 'pt', 'a4');
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(new Date()+'.pdf');
},
background: "#fff",
allowTaint: true
})
};