如何使用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文件支持跨域”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
推荐阅读
-
Linux怎么在命令行下提取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文件
vue怎么将html页面生成高清晰pdf文件本文小编为大家详细介绍...
