JS导出JSP页面为PDF

导出PDF的内容,任意的DOM节点 , 需要导入html2canvas.js和jspdf.debug.js

//part1:设置canvas的参数
var canvas = document.createElement("canvas");
var ctx = canvas.getContext('2d');
// 【重要】关闭抗锯齿...老重要了 -_-||| 导出的pdf也变清晰了  ,抗锯齿和放大并存!!!!
ctx.mozImageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false;
ctx.msImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
//果然还是得canvas放大,才能清晰    诶,,得意忘形了,放大倍数改成了4,生成的图片一百多M,弄得网页崩溃了。。。
canvas.width = document.body.clientWidth * 2;
canvas.height = document.body.clientHeight * 2;
ctx.scale(2,2);

//part2:使用canvas绘制图片,图片来源是id为body的dom *O* 然后用jsPDF将图片导出成pdf
html2canvas($("#body"), {
canvas:canvas,
onrendered: function(canvas) {
var imgData = canvas.toDataURL();
var img = new Image();
img.src = imgData;
//这儿是图片显示的宽高了,不影响分辨率,放大缩小一样的
$(img).css({
        "width": canvas.width / 4 + "px",
        "height": canvas.height / 4 + "px",
})

//根据图片的尺寸设置pdf的规格,要在图片加载成功时执行,之所以要*0.225是因为比例问题
img.onload = function() {
//这句话是在body后面显示一张图片
//document.body.appendChild(img);
//此处需要注意,pdf横置和竖置两个属性,需要根据宽高的比例来调整,不然会出现显示不完全的问题
if (this.width > this.height) {
    var doc = new jsPDF('l', 'mm', [this.width * 0.225, this.height * 0.225]);
} else {
    var doc = new jsPDF('p', 'mm', [this.width * 0.225, this.height * 0.225]);
}
doc.addImage(img, 'jpeg', 0, 0, this.width * 0.225, this.height * 0.225);
//根据下载保存成不同的文件名
doc.save('report_pdf_' + new Date().getTime() + '.pdf');
}
},
background: "#FFFFFF",
//这里给生成的图片默认背景,不然的话,如果你的html根节点没设置背景的话,会用黑色填充。
allowTaint: true //避免一些不识别的图片干扰,默认为false,遇到不识别的图片干扰则会停止处理html2canvas
});

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值