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

网站首页没排名但内页有排名南京推广公司

网站首页没排名但内页有排名,南京推广公司,wordpress 收不到邮件,哪个网站做汽车分期项目开发中遇到了一个变态需求#xff0c;需要把一整个页面导出为pdf格式#xff0c;而且要保留页面上的所有的表格、svg图片和样式。 简而言之#xff0c;就是希望像截图一样#xff0c;把整个页面截下来#xff0c;然后保存成pdf。 咋不上天呢…… 查了一下#xff0c;…项目开发中遇到了一个变态需求需要把一整个页面导出为pdf格式而且要保留页面上的所有的表格、svg图片和样式。 简而言之就是希望像截图一样把整个页面截下来然后保存成pdf。 咋不上天呢…… 查了一下能够实现html转pdf的方法还是挺多的大概有以下几种 1、大部分浏览器就有这个功能。然而我们客户要的可不是这个人家要的是能够在系统中主动触发的导出为pdf功能所以这种方案pass。 2、利用第三方工具。我找到了一种利用wkhtmltopdf这种工具来导出的方案自己在我们的项目中试了一下效果不好而且对svg图片的支持也不行。pass。 3、还有一种是利用iText类后台生成java文件。但因为需要导出的这个页面是动态页面而且直接把页面传给后台会丢失大量样式所以还是pass。 最后没什么好的办法只能退而求其次想着要不先把html页面转成图片再把图片导出为pdf。因为要支持用户导出下载而且要保留样式所以最好是纯js前端实现。 html转canvas的话就用html2canvas这个js这个网上介绍比较多了这里就不废话了。 比较麻烦的是svg图片直接用html2canvas无法把svg标签的内容转成canvas最后查了一圈资料后锁定了canvg这个js。canvg是谷歌的一个插件可以将svg标签内容转成canvas。具体到我们的项目还有一个难点就是如何把glyphicons这种字体图标也转成canvas因为在不同浏览器下对这种字体图标的支持是完全不一样的。最后找到的方法是用char code来替换这些字体图标重新绘制成canvas。由canvas生成图片不用废话。由图片生成pdf用jsPDF实现。 折腾了大半天总算把整个流程打通了接下来一步一步贴上代码。 第一步把对应dom节点里所有的svg元素替换成canvas 1 svg2canvas: function(targetElem) {2 var svgElem targetElem.find(svg);3 svgElem.each(function(index, node) {4 var parentNode node.parentNode;5 //由于现在的IE不支持直接对svg标签node取内容所以需要在当前标签外面套一层div通过外层div的innerHTML属性来获取6 var tempNode document.createElement(div);7 tempNode.appendChild(node);8 var svg tempNode.innerHTML;9 var canvas document.createElement(canvas); 10 //转换 11 canvg(canvas, svg); 12 parentNode.appendChild(canvas); 13 }); 14 } 第二步把glyphicons字体转成canvas。如果项目中没有用到glyphicons字体图标可忽略这一步 1 glyphicons2canvas: function(targetElem, fontClassName, fontFamilyName) {2 var iconElems targetElem.find(. fontClassName);3 iconElems.each(function(index, inconNode) {4 var fontSize $(inconNode).css(font-size);5 var iconColor $(inconNode).css(color);6 var styleContent $(inconNode).attr(style);7 //去掉px8 fontSize fontSize.replace(px, );9 var charCode getCharCodeByGlyphiconsName(iconName); 10 var myCanvas document.createElement(canvas); 11 //把canva宽高各增加2是为了显示图标完整 12 myCanvas.width parseInt(fontSize) 2; 13 myCanvas.height parseInt(fontSize) 2; 14 myCanvas.style styleContent; 15 var ctx myCanvas.getContext(2d); 16 //设置绘图内容的颜色 17 ctx.fillStyle iconColor; 18 //设置绘图的字体大小以及font-family的名字 19 ctx.font fontSize px fontFamilyName; 20 ctx.fillText(String.fromCharCode(charCode), 1, parseInt(fontSize) 1); 21 $(inconNode).replaceWith(myCanvas); 22 }); 23 } 24 //根据glyphicons/glyphicon图标的类名获取到对应的char code 25 getCharCodeByGlyphiconsName: function(iconName) { 26 switch (iconName) { 27 case(glyphicons-resize-full): 28 return 0xE216; 29 case (glyphicons-chevron-left): 30 return 0xE225; 31 default: 32 return ; 33 } 34 } 第三步html转canvas转图片再转pdf 1 html2canvas($(#myExportArea), {2 onrendered: function(canvas) {3 var imgData canvas.toDataURL(image/jpeg);4 var img new Image();5 img.src imgData;6 //根据图片的尺寸设置pdf的规格要在图片加载成功时执行之所以要*0.225是因为比例问题7 img.onload function() {8 //此处需要注意pdf横置和竖置两个属性需要根据宽高的比例来调整不然会出现显示不完全的问题9 if (this.width this.height) { 10 var doc new jsPDF(l, mm, [this.width * 0.225, this.height * 0.225]); 11 } else { 12 var doc new jsPDF(p, mm, [this.width * 0.225, this.height * 0.225]); 13 } 14 doc.addImage(imgData, jpeg, 0, 0, this.width * 0.225, this.height * 0.225); 15 //根据下载保存成不同的文件名 16 doc.save(report_pdf_ new Date().getTime() .pdf); 17 } 18 }, 19 background: #fff, 20 //这里给生成的图片默认背景不然的话如果你的html根节点没设置背景的话会用黑色填充。 21 allowTaint: true //避免一些不识别的图片干扰默认为false遇到不识别的图片干扰则会停止处理html2canvas 22 }); 虽然最后勉强完成了客户的要求但是生成的pdf效果明显不如正常截图来的清晰……水平所限暂时只能想到这种方法如果大家有更好的办法欢迎指点。 一个简单的demohttps://github.com/SuperNaturalGit/HtmlToPdf 使用方法 使用Git克隆项目到本地git clone https://github.com/SuperNaturalGit/HtmlToPdf.git 使用chrome浏览器打开index.html即可。其他浏览器的兼容性没测试。 如果不用git直接把几个文件全部copy到本地只要相对路径没问题也可以运行的。 ps:评论里冷秋月同学对导出流程做了改良可以解决闪烁以及背景的问题大家可以参考。转载于:https://www.cnblogs.com/skyInk/p/6401563.html
http://www.zqtcl.cn/news/604532/

相关文章:

  • 水果网站推广网站首页静态好还是动态好
  • iis网站属性小程序源码无需服务器
  • 景区网站建设材料代运营有哪些套路坑
  • 六安电商网站建设哪家好有关做美食的网站
  • 卸载wordpress插件网店seo关键词
  • 金山网站制作赤城seo网站优化排名
  • 提供坪山网站建设深圳商城网站哪家做的好
  • 有什么网站可以帮人做模具吗热搜榜百度一下你就知道
  • 深圳网站优化技巧邹城住房城乡建设部网站
  • 小型企业网站建站桂林市中考信息网官网
  • 雏鸟app网站推广做网站用宋体有版权问题吗
  • 建立网站数据库开公司流程及费用2022最新
  • 外贸谷歌网站推广wordpress调用上传图片
  • 360提示危险网站原因威海 网站开发
  • 赣州本地网站网站怎么写
  • 物业公司网站设计湛江做网站软件
  • 做招聘求职网站wordpress启用插件出错
  • 珠海网站运营网站个人备案流程
  • 网站开发用什么图片格式最好网络营销名词解释是什么
  • 做柜子网站老电脑做网站服务器
  • 域名购买网站网店装修是什么
  • wordpress 网站备份为什么企业要建设自己的企业文化
  • 想做一个部门的网站怎么做潍坊网站建设价
  • 网站建设公司的公司哪家好什么行业必须做网站
  • 电子商务网站前台设计wordpress 上传文件大小
  • 深圳市住房和城乡建设局网站非常好的资讯网站设计
  • 长春作网站建设的公司国家建设环保局网站
  • 网站开发的有哪些好的软件wordpress菜单栏的函数调用
  • 家庭清洁东莞网站建设技术支持建筑模板厂投资多少钱
  • 郑州企业建站详情网站开发和网页开发有什么区别