标签:UNC ice 导出 exp fun 组件 ima 全局 jspdf
npm install html2Canvas --save
npm install jspdf--save
// 导出页面为PDF格式
import html2Canvas from ‘html2canvas‘
import JsPDF from ‘jspdf‘
import { Loading } from ‘element-ui‘
let loading
export default class PadDownloader {
static install(Vue, options) {
Vue.prototype.downloadPdf = function (options) {
loading = Loading.service({
lock: true,
text: ‘正在下载文件...‘,
background: ‘rgba(0,0,0,.5)‘
})
const title = options.title
const content = document.querySelector(‘#‘ + options.selector)
html2Canvas(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()
}
}
}
loading.close()
PDF.save(title + ‘.pdf‘)
})
}
}
}
// main.js
Vue.use(PadDownloader)
// 在其他的页面直接使用全局方法`downloadPdf `
<div>
<el-button
type="primary"
style="margin-left: 300px;"
v-on:click="downloadPdf({title:‘投标文件‘,selector:‘pdf-container‘})"
>下载商务文件</el-button>
</div>
标签:UNC ice 导出 exp fun 组件 ima 全局 jspdf
原文地址:https://www.cnblogs.com/leslie1943/p/13358111.html