需要安装依赖
npm install html2canvas jspdf
<template>
<div>
<el-button size="mini" type="primary" icon="el-icon-download" @click="handleExport">下 载</el-button>
<el-table ref="downLoadBox" :data="tableData" border style="width: 100%" >
<el-table-column label="序号" width="55" type="index" />
<el-table-column label="序号" width="55" type="index" />
<el-table-column prop="date" label="日期" width="180" />
<el-table-column prop="name" label="姓名" width="180" />
<el-table-column prop="address" label="地址" />
</el-table>
</div>
</template>
<script>
import FileSaver from "file-saver";
var XLSX = require("xlsx");
export default {
props: {},
name: "export",
data() {
return {
tableData: [
{
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄",
},
{
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄",
},
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄",
},
],
};
},
filters: {},
created() {},
mounted() {},
watch: {},
methods: {
handleExport() {
let myBox = this.$refs.downLoadBox; //获取ref里面的内容
html2canvas(myBox, {
useCORS: true, //是否尝试使用CORS从服务器加载图像
allowTaint: true,
dpi: 300, //解决生产图片模糊
scale: 3, //清晰度--放大倍数
}).then(function (canvas) {
let contentWidth = canvas.width;
let contentHeight = canvas.height;
let pageHeight = (contentWidth / 592.28) * 841.89; // 一页pdf显示html页面生成的canvas高度;
let leftHeight = contentHeight; //未生成pdf的html页面高度
let position = 0; //pdf页面偏移
//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
// let imgWidth = 595.28
let imgWidth = 560.28; //宽度
let imgHeight = (592.28 / contentWidth) * contentHeight;
let pageData = canvas.toDataURL("image/jpeg", 1.0);
let PDF = new jsPDF("", "pt", "a4");
// 有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
//当内容未超过pdf一页显示的范围,无需分页
if (leftHeight < pageHeight) {
PDF.addImage(pageData, "JPEG", 20, 20, imgWidth, imgHeight);
} else {
while (leftHeight > 0) {
PDF.addImage(pageData, "JPEG", 20, position, imgWidth, imgHeight);
leftHeight -= pageHeight;
position -= 841.89;
if (leftHeight > 0) {
PDF.addPage();
}
}
}
PDF.save("导出的文件.pdf"); //下载标题
});
},
},
};
</script>