当前位置: 首页 > news >正文

jsp网站建立微信公众号运营大学

jsp网站建立,微信公众号运营大学,淘宝运营,网页版抖音登录入口1#xff0c;技术方案为#xff1a;html2canvas把页面生成canvas图片#xff0c;再通过jspdf生成PDF文件#xff1b; 2#xff0c;安装依赖#xff1a; npm i html2canvas -S npm i jspdf -S 3#xff0c;封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //titl…1技术方案为html2canvas把页面生成canvas图片再通过jspdf生成PDF文件 2安装依赖 npm i html2canvas -S npm i jspdf -S 3封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //title表示为下载的标题html表示document.querySelector(#myPrintHtml) import html2Canvas from html2canvas; import JsPDF from jspdf;let noTableHeight 0; //table外的元素高度 export function pageToPDF(title, html, lableList, type) {// type传有效值pdf则为横版if (lableList) {const pageHeight Math.floor((277 * html.scrollWidth) / 190) 20; //计算pdf高度for (let i 0; i lableList.length; i) {//循环获取的元素const multiple Math.ceil((lableList[i].offsetTop lableList[i].offsetHeight) / pageHeight); //元素的高度if (isSplit(lableList, i, multiple * pageHeight)) {//计算是否超出一页var _H ; //向pdf插入空白块的内容高度if (lableList[i].localName ! tr) {//判断是不是表格里的内容_H multiple * pageHeight - (lableList[i].offsetTop lableList[i].offsetHeight);} else {_H multiple * pageHeight - (lableList[i].offsetTop lableList[i].offsetHeight noTableHeight) 20;}var newNode getFooterElement(_H); //向pdf插入空白块的内容const divParent lableList[i].parentNode; // 获取该div的父节点const next lableList[i].nextSibling; // 获取div的下一个兄弟节点// 判断兄弟节点是否存在if (next) {// 存在则将新节点插入到div的下一个兄弟节点之前即div之后divParent.insertBefore(newNode, next);} else {// 否则向节点添加最后一个子节点divParent.appendChild(newNode);}}}}html2Canvas(html, {allowTaint: false,taintTest: false,logging: false,useCORS: true,dpi: window.devicePixelRatio * 1,scale: 1, // 按比例增加分辨率}).then(canvas {var pdf new JsPDF(p, mm, a4); // A4纸纵向var ctx canvas.getContext(2d);var a4w type ? 277 : 190;var a4h type ? 190 : 277; // A4大小210mm x 297mm四边各保留10mm的边距显示区域190x277var imgHeight Math.floor((a4h * canvas.width) / a4w); // 按A4显示比例换算一页图像的像素高度var renderedHeight 0;while (renderedHeight canvas.height) {var page document.createElement(canvas);page.width canvas.width;page.height Math.min(imgHeight, canvas.height - renderedHeight); // 可能内容不足一页// 用getImageData剪裁指定区域并画到前面创建的canvas对象中page.getContext(2d).putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0);pdf.addImage(page.toDataURL(image/jpeg, 1.0), JPEG, 10, 10, a4w, Math.min(a4h, (a4w * page.height) / page.width)); // 添加图像到页面保留10mm边距renderedHeight imgHeight;if (renderedHeight canvas.height) {pdf.addPage(); // 如果后面还有内容添加一个空页}// delete page;}// 保存文件pdf.save(title .pdf);}); } // pdf截断需要一个空白位置来补充 function getFooterElement(remainingHeight, fillingHeight 0) {const newNode document.createElement(div);newNode.style.background #ffffff;newNode.style.width calc(100% 8px);newNode.style.marginLeft -4px;newNode.style.marginBottom 0px;newNode.classList.add(divRemove);newNode.style.height remainingHeight fillingHeight px;return newNode; } function isSplit(nodes, index, pageHeight) {// 判断是不是tr 如果不是高度存起来// 表格里的内容要特殊处理// tr.offsetTop 是tr到table表格的高度// 所以计算高速时候要把表格外的高度加起来// 生成的pdf没有表格了这里可以不做处理 直接计算就行if (nodes[index].localName ! tr) {//判断元素是不是trnoTableHeight nodes[index].clientHeight;}if (nodes[index].localName ! tr) {return (nodes[index].offsetTop nodes[index].offsetHeight pageHeight nodes[index 1] nodes[index 1].offsetTop nodes[index 1].offsetHeight pageHeight);} else {return (nodes[index].offsetTop nodes[index].offsetHeight noTableHeight pageHeight nodes[index 1] nodes[index 1].offsetTop nodes[index 1].offsetHeight noTableHeight pageHeight);} }4调用方式及页面id和class值添加添加classpdf-details是为了处理分页隔断 function downloadPdf() {const lableList document.getElementsByClassName(pdf-details);pageToPDF(降雨结论报告, document.querySelector(#rainReport), lableList);}
http://www.tj-hxxt.cn/news/225342.html

相关文章:

  • 医院网站模板下载北京广告公司地址
  • 网站风险怎么解决方案两当网站建设
  • 牡丹江建设网站呼和浩特市城乡建设保障局网站
  • 免费做网站手机模板网站建设+百度
  • 做电影网站视频放在那里做网站用那种数据库
  • 杭州 做网站沈阳男科医院去哪里
  • 网页源码怎么做网站庆阳网红宝军
  • 互联网推广销售好做吗官网关键词优化价格
  • 网站建设合同中英文网站建设 网站优化
  • 做简历最好的网站网站建设黄页软件
  • 设计个企业网站网页咋弄唐河企业网站制作哪家好
  • dw做的网站要多大网络开发工程师是做什么的
  • 重庆做网站哪个好些嘛前端需要学什么语言
  • 共享门店新增跑腿距离计算优化关于seo网站优化公司
  • 云主机网站济南市商务局官方网站
  • 怎样开始学做自媒体河南网站排名优化
  • 南昌专业做网站公司哪家好wordpress 4.5 漏洞
  • 泰州网站建设策划方案福建新闻最新消息
  • 免费网站引导页做网站用微信收款还是支付宝
  • 小游戏网站欣赏如何用wordpress创建主页
  • 网站导航面包屑远涛网站建设
  • 网站设计技术贵州交通建设集团网站
  • 外贸型网站建设公司企业网络安全解决方案
  • 深圳住房和建设局网站统一楼网络规划设计方案
  • 做医院网站公司福建省建设干部培训中心网站
  • 多个页面网站的制作方法wordpress.org
  • 湖南服装网站建设百度一下官方网址
  • app推广方法及技巧seo经典案例
  • 国家建设官方网站seo策略分析
  • 网站建设技术线路选择怎么给网站做开场动画