下载插件
npm install html2canvas --save
npm install jspdf --save
创建导出函数文件htmlToPdf.js
// 导出页面为PDF格式
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
export default {
install(Vue, options) {
Vue.prototype.getPdf = function (name, id) {
let title = name || 'index'
html2Canvas(document.querySelector(`#${id}`), {
allowTaint: true,
taintTest: false,
useCORS: true,
dpi: window.devicePixelRatio * 4, // 将分辨率提高到特定的DPI 提高四倍
scale: 4, // 按比例增加分辨率
logging: true // 可以长屏分页导出
}).then(function (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
let pageData = canvas.toDataURL('image/jpeg', 1.0)
let PDF = new JsPDF('', 'pt', 'a4')
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(title + '.pdf')
})
}
}
}
在 main.js 文件里引入并全局注册
import htmlToPdf from '@/utils/htmlToPdf'
Vue.use(htmlToPdf)
页面中使用
<template>
<div>
<div class="btn" @click="exportPDF">
<div class="wrapper" id="wrapper-PDF">
......
</div>
</div>
</template>
export default {
data() {
return {}
},
methods: {
exportPDF() {
this.getPdf('文件名称', 'wrapper-PDF')
}
}
}
本文转载自: https://blog.csdn.net/aaa123aaasqw/article/details/129992628
版权归原作者 嫣嫣细语 所有, 如有侵权,请联系我们删除。
版权归原作者 嫣嫣细语 所有, 如有侵权,请联系我们删除。