前端html转pdf
转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <button id="exportToPdf">导出为PDF</button> <div id="export_content"> <div> sdsf </div> <div style="color: red"> sdsf 1231313 </div> </div> </body> <script src="https://cdn.bootcss.com/jspdf/1.5.3/jspdf.debug.js"></script> <script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.min.js"></script> <script type="text/javascript"> var downPdf = document.getElementById("exportToPdf"); downPdf.onclick = function () { html2canvas( document.getElementById("export_content"), { dpi: 172,//导出pdf清晰度 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; //pdf页面偏移 var position = 0; //html页面生成的canvas在pdf中图片的宽高(a4纸的尺寸[595.28,841.89]) 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(\'content.pdf\'); }, //背景设为白色(默认为黑色) background: "#fff" }) } </script> </html>
如果是vue版本的 注意一定要用 cnpm下载,用npm是下载不过来的
cnpm install vue-pdf --save-dev
版权声明:本文为pengfei25原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。