如何使用canvas保存网页为pdf文件支持跨域
这篇文章给大家分享的是有关如何使用canvas保存网页为pdf文件支持跨域的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
使用canvas保存网页为pdf文件支持跨域
正文
需求:用户点击下载,将页面保存为PDF文件并下载。
思路:继续使用Canvas截图后将画布内容转换为pdf文件。
首先我们需要引入js文件jspdf.debug.js 下载路径 https://github.com/MrRio/jsPDF
引入canvas的js文件,js文件获取地址官网主页:http://html2canvas.hertzen.com/
<scripttype="text/javascript"src="js/html2canvas.js"></script> <scripttype="text/javascript"src="js/html2canvas.min.js"></script> <scripttype="text/javascript"src="js/jspdf.debug.js"></script>
div按钮代码
<divid="down_pdf">导出为PDF按钮</div> <divclass="sta-main">需要获取为PDF的div</div>
jsp代码
<scripttype="text/javascript"> /*vardownPdf=document.getElementById("down_pdf");*/ vardownPdf=document.getElementById("down_pdf"); $("#down_pdf").on("click",function(){ varcanvas2=document.createElement("canvas"); let_canvas=document.querySelector('.sta-main'); //获取宽高 varw=parseInt(window.getComputedStyle(_canvas).width); varh=parseInt(window.getComputedStyle(_canvas).height); //将canvas画布放大2倍,然后盛放在小的容器内,处理模糊 canvas2.width=w*2; canvas2.height=h*2; canvas2.style.width=w+"px"; canvas2.style.height=h+"px"; varcontext=canvas2.getContext("2d"); //处理偏移 context.scale(1.5,1.5); //修改背景颜色,默认是黑色 $('.sta-main').css("background","#fff") html2canvas(_canvas,{ //处理pdf跨域获取不到跨域信息问题 taintTest:false, useCORS:true, allowTaint:false, canvas:canvas2, dpi:172,//导出pdf清晰度 onrendered:function(canvas){ varcontentWidth=canvas.width; varcontentHeight=canvas.height; //一页pdf显示html页面生成的canvas高度; varpageHeight=contentWidth/592.28*841.89; //未生成pdf的html页面高度 varleftHeight=contentHeight; //pdf页面偏移 varposition=0; //html页面生成的canvas在pdf中图片的宽高(a4纸的尺寸[595.28,841.89]) varimgWidth=595.28; varimgHeight=592.28/contentWidth*contentHeight; varpageData=canvas.toDataURL('image/jpeg',1.0); varpdf=newjsPDF('','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('PDF的名字.pdf'); } }) $('.sta-main').css("background","") }) </script>
此次网页改为PDF,与上次截图网页为PNG,使用同一种技术,都是先使用Canvas截图画布后转格式。
同样也有偏移、模糊、跨域等问题,使用之前的代码来处理。
转换pdf会让背景色变为黑色使用css样式改一下背景色就可以了。
完美转换为pdf。
感谢各位的阅读!关于“如何使用canvas保存网页为pdf文件支持跨域”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
推荐阅读
-
神奇的Python模块:pdfkit,将Python抓取的网址内容保存pdf文件
-
pdfkit | 利用python实现html文件转pdf
-
PHP将html生成pdf文件(TCPDF)
-
PHP HTML生成PDF文档
-
后端动态生成word或pdf的几种常见方法
-
Python怎么实现文字pdf转换图片pdf效果
Python怎么实现文字pdf转换图片pdf效果本篇内容主要讲解“...
-
CAD图纸如何转换PDF格式
-
可视化html文件怎么修改支持PDF导出
可视化html文件怎么修改支持PDF导出这篇文章主要介绍“可视化h...
-
vue怎么将html页面生成高清晰pdf文件
-
Linux下对比两个PDF文件的命令有哪些