将html中的内容生成PDF并且下载


<head>
@*需要引用的js库*@
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script> </head> <body> <div id="pdfDom" class="right-aside"> 1232132131sd </div> <input type="button" value="点击" onclick="makeMpdf('建设工程施工安全监督抽查记录', 'pdfDom')" /> <script type="text/javascript">//将html页面导出.pdf格式文件(适用于jQuery、vue库) -- xzz 2018/04/24 function makeMpdf(pdfName,elementId) { if (confirm("您确认下载该PDF文件吗?")) { //var target = document.getElementsByClassName("right-aside")[0]; var target = document.getElementById(elementId); target.style.background = "#FFFFFF"; if (pdfName == '' || pdfName == undefined) pdfName = "content"; html2canvas(target, { onrendered: function (canvas) { var contentWidth = canvas.width; var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; var pageHeight = contentWidth / 592.28 * 841.89; //未生成pdf的html页面高度 var leftHeight = contentHeight; //页面偏移 var position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 var imgWidth = 595.28; var imgHeight = 592.28 / contentWidth * contentHeight; var pageData = canvas.toDataURL('image/jpeg', 1.0); var 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(pdfName + ".pdf"); } }) } } </script> </body>

 

posted @ 2019-07-16 11:13  好记性不如烂笔头啊  阅读(2026)  评论(0编辑  收藏  举报