html转pdf 兼容ie,Vue网页html转换PDF(最低兼容ie10)的思路详解

本文介绍了如何使用HTML2Canvas和jsPDF在Vue应用中将网页转换为PDF,特别强调了在IE10环境下处理样式丢失的方法,包括清除input边框和使用隐藏域。适合开发者学习前端PDF导出技术。
摘要由CSDN通过智能技术生成

HTML转PDF:

1.页面底层实现——Vue:最低兼容ie10

2.实现思路:

1> 使用html2canvas.js将网页转换为图片

2> 使用jsPdf.debug.js将canvas生成的图片转换为pdf文件

具体实现:

要这样实现首先要引入两个插件:

html2canvas.js

jsPdf.debug.js

注:

因为ie10在canvas截图时候会出现部分样式丢失的情况,所以在代码中有部分修改了页面的样式

所以建议在做截图的时候,将页面代码复制一份到隐藏域,在隐藏域里面做修改,这样就不会修改页面原有样式了

如果大家有更好的方法,欢迎提议

下面上代码:

import co from 'co'

import html2Canvas from '../html2canvas'

import JsPDF from '../jsPdf.debug'

export default {

title: '用户信息',

data () {

return {}

},

methods: {

// 核心代码

printOut () {

// 获取需要打印的区域,以div为单位,此处使用的是vue的选择器

let pdfDom = document.querySelector('#pdf-wrap')

// 因为在ie10下,会出现input样式丢失的情况,所以在此处清楚input的标签的边框

let arrnode = pdfDom.querySelectorAll('input')

for (var i = 0; i < arrnode.length; i++) {

arrnode[i].style.border = 'hidden'

}

// 设置背景色

pdfDom.style.background = '#FFFFFF'

let _this = this

html2Canvas(pdfDom, {

allowTaint: true, taintTest: false,

onrendered: function (canvas) {

// 开始canvas截图

// 开始准备工作

let contentWidth = canvas.width

let contentHeight = canvas.height

let pageHeight = contentWidth / 592.28 * 841.89

let leftHeight = contentHeight

let position = 0

let imgWidth = 595.28

let imgHeight = 592.28 / contentWidth * contentHeight

// 此处图片格式可以是PNG,也可是JPEG,注意:需要考虑Browser支持的图片格式

let pageData = canvas.toDataURL('image/PNG', 1)

pdfDom.style.display = 'none'

// 开始将图片转换为PDF

// 设置纸张大小,方向

let PDF = new JsPDF('', 'pt', 'a4')

if (leftHeight < pageHeight) {

PDF.addImage(pageData, 'PNG', 0, 0, imgWidth, imgHeight)

} else {

while (leftHeight > 0) {

PDF.addImage(pageData, 'PNG', 0, position, imgWidth, imgHeight)

leftHeight -= pageHeight

position -= 841.89

if (leftHeight > 0) {

PDF.addPage()

}

}

}

// 保存PDF

PDF.save(_this.userInfo.card_id + '-' + _this.userInfo.user_name + '.pdf')

}

})

html2Canvas()

}

},

ready () {

}

}

总结

以上所述是小编给大家介绍的Vue网页html转换PDF(最低兼容ie10)的思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值