主要用到两个插件:html2canvas、jspdf。
第一步下载插件,引用
npm install html2canvas;
npm install jspdf --save
import Echarts from "./echarts.vue"
import html2canvas from 'html2canvas';
第二步定义一个按钮
<el-button type="primary" @click="download" round>下载PDF</el-button>
第三步定义打印区域
<div id='pdf-content'>
...需要打印pdf的内容
<div>
第四步实现方法
download() {
html2canvas(document.getElementById('pdf-content'), {
// allowTaint: true
useCORS: 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('pdf名字.pdf')
})
}