jspdf下载页面pdf文件
本文方法是html2canvas + jspdf
下载html2canvas、jspdf
创建htmlToPdf.js文件
import html2Canvas from 'html2canvas' import JsPDF from 'jspdf' import { Loading } from 'element-ui' let loading export default { install(Vue, options) { // 传入文件名,id名 Vue.prototype.getPdf = function(pdfTitle, id) { loading = Loading.service({ lock: true, text: '正在下载pdf...', background: 'rgba(255, 255, 255, 0.5)' }) html2Canvas(document.querySelector(id), { allowTaint: true, useCORS: true }).then(function(canvas) { loading.close() 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(pdfTitle + '.pdf') }) } } }
main.js中引入htmlToPdf.js文件
import htmlToPdf from '../src/utils/htmlToPdf'
Vue.use(htmlToPdf)
使用
<el-button type="primary" @click="getPdf('背景信息', '#trade-contract-print')">下载背景信息</el-button>