标签:canvas VUE HTML let htmlToPdf leftHeight PDF 页面
npm install --save html2canvas@1.0.0-rc.4
npm install jspdf
封装htmlToPdf
//导出页面为PDF格式 import html2canvas from 'html2canvas'; import JsPDF from 'jspdf'; const htmlToPdf = { getPdf(title,content){ html2canvas(content,{ allowTaint:true, scale: 3,// 清晰度 }).then(canvas=>{ var context = canvas.getContext('2d'); // 设置字体样式 context.font = '24px SimSun, Songti SC'; context.fillText('24px的宋体呈现', 20, 50); //内容的宽度 let contentwidth =canvas.width;//内容的高度 let contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度,a4纸的尺寸[595.28,841.89]; let pageHeight =contentwidth/ 592.28 * 841.89; //未生成pdf的html页面高度 let leftHeight = contentHeight//页面偏移 let position = 0; //a4纸的尺寸[595.28,841.89], html页面生成的canvas在pdf中图片的宽高 let imgwidth=595.28; let imgHeight =592.28 / contentwidth * contentHeight; //canvas转图片数据 let pageData = canvas.toDataURL( 'img/jpeg',1.0);//新建JsPDF对象 let 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() } } } console.log(pageData)//(获取压缩的PDF文件图片数据) //保存文件 PDF.save(title + '.pdf') }) } }; export default htmlToPdf;
前端调用:
<div id = "pdfDom"> <JxtRcyjJobTemplate :JxtRcyjJobData="JxtRcyjJobData"></JxtRcyjJobTemplate> </div> <script type="es6"> import htmlToPdf from '@/utils/htmlToPdf.js'; methods: { downloadPdf(){ htmlToPdf.getPdf("呈报表",document.getElementById("pdfDom")); } } </script>
标签:canvas,VUE,HTML,let,htmlToPdf,leftHeight,PDF,页面 来源: https://www.cnblogs.com/zxg-6/p/16546976.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。