前端将页面下载为pdf
首先你需要引入pdf相关的两个js文件,这是线上的js,你可以复制上面的网址复制下来封装成js文件,导入自己的项目
<script src="https://cdn.bootcss.com/jspdf/1.5.3/jspdf.debug.js"></script>
<script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
这里是一个前端的divl里面嵌套的一个table,上面是一个导出按钮
<div id='excelOutOne' class="aos-btn-info" style="height: 40px;
width: 100px;text-align:
center;padding-top: 10px;
margin: 10px 0px 0px 15px"
onclick="tableToPdf()">导出为pdf</div>
<div class="khTable" id="grid">
<table class="tableHead">
<tr>
<td colspan="9"><h3>部门年度考核指标</h3></td>
</tr>
<tr>
<td class="wid4">序号</td>
<td class="wid10">考核指标</td>
<td class="wid8">权重倍数</td>
<td class="wid30">考核细则</td>
<td class="wid8">计分系数/基础分值</td>
<td class="wid8">系统评分</td>
<td class="wid8">处室评分</td>
<td class="wid8">自我申报得分</td>
<td class="wid8">总分</td>
</tr>
</table>
<table class="tableData">
</table>
</div>
</div>
只需要在js里面放入以下代码即可把页面想要的DOM对象下载为pdf
function tableToPdf() {
html2canvas(
//这个是想要导出的DOM元素的id
document.getElementById("grid"),
{
dpi: 172,//导出pdf清晰度
onrendered: function (canvas) {
var contentWidth = canvas.width;
var contentHeight = canvas.height;
//一页pdf显示html页面生成的canvas高度;
var pageHeight = contentWidth / 592.28 * 841.89;
//未生成pdf的html页面高度
var leftHeight = contentHeight;
//pdf页面偏移
var position = 0;
//html页面生成的canvas在pdf中图片的宽高(a4纸的尺寸[595.28,841.89])
var imgWidth = 595.28;
var imgHeight = 592.28 / contentWidth * contentHeight;
var pageData = canvas.toDataURL('image/jpeg', 1.0);
var pdf = new jsPDF('', 'pt', 'a4');
//有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
//当内容未超过pdf一页显示的范围,无需分页
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('content.pdf');
},
//背景设为白色(默认为黑色)
background: "#fff"
})
}