vue 前端png转pdf_Vue网站html转换PDF(最低兼容ie10)的思路详解

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)的思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对乐购源码网址的支持!

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页