html2canvas导出pdf,表格导出为pdf

本文介绍了如何使用HTML2Canvas和jspdf库将包含滚动条的el-table内容导出为PDF,同时过滤掉不需要的元素。通过实例代码展示如何导出HTML节点并指定隐藏节点ID,生成清晰的A4尺寸PDF文件。

导出滚动条外的表格,同时过滤不需要的元素。

1.安装插件

npm i html2canvas jspdf --save-dev

2.新建htmlpdf.js文件

import html2Canvas from 'html2canvas';
import JsPDF from 'jspdf';
/**
 * @param  node          要生成 pdf 的DOM元素(容器)
 * @param  padfName    PDF文件生成后的文件名字
 * */
//主要代码
function downloadPDF(node, printHide, padfName) {
  window.pageYoffset = 0;
  document.documentElement.scrollTop = 0;
  document.body.scrollTop = 0;
  const el = document.querySelector(node); // 整个导出节点
  return new Promise((resolve, reject) => {
    const ele = document.querySelector(node);
    let eleW = ele.offsetWidth; // 获得该容器的宽
    let eleH = ele.offsetHeight; // 获得该容器的高
    let eleOffsetTop = ele.offsetTop; // 获得该容器到文档顶部的距离
    let eleOffsetLeft = ele.offsetLeft; // 获得该容器到文档最左的距离
    var canvas = document.createElement("canvas");
    let scaleBy = window.devicePixelRatio > 1 ? window.devicePixelRatio : 1;
    canvas
要使用Vuejspdfhtml2canvas实现滚动表格数据导出PDF,可按以下步骤操作: ### 1. 安装依赖 在项目中安装`html2canvas`和`jspdf`: ```bash npm install html2canvas jspdf -s ``` ### 2. 创建导出工具文件 创建一个`htmlToPdf.js`文件,用于封装导出PDF的方法: ```javascript // htmlToPdf.js import html2Canvas from 'html2canvas' import JsPDF from 'jspdf' export default { install(Vue, options) { Vue.prototype.getPdf = function(selector, title) { const scale = 2; html2Canvas(document.querySelector(selector), { allowTaint: true, // 开启跨域 scale // 提升画面质量,但是会增加文件大小 }).then(function(canvas) { const contentWidth = canvas.width / scale; const contentHeight = canvas.height / scale; const PDF = new JsPDF('', 'pt', [contentWidth, contentHeight]); const pageData = canvas.toDataURL('image/jpeg', 1.0); PDF.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight); PDF.save(title + '.pdf'); }) } } } ``` ### 3. 在`main.js`中引入并使用 在`main.js`中引入上述封装的工具文件并使用: ```javascript // main.js import Vue from 'vue' import App from './App.vue' // 引入html转pdfjs import htmlToPdf from './assets/js/htmlToPdf.js' Vue.use(htmlToPdf) new Vue({ render: h => h(App), }).$mount('#app') ``` ### 4.Vue组件中使用导出方法 在需要导出滚动表格数据的Vue组件中,添加一个按钮触发导出操作: ```vue <template> <div> <button @click="exportToPdf">导出PDF</button> <div id="pdfDom"> <!-- 这里放置滚动表格 --> <table> <!-- 表格内容 --> </table> </div> </div> </template> <script> export default { data() { return { htmlTitle: '滚动表格数据' } }, methods: { exportToPdf() { this.getPdf('#pdfDom', this.htmlTitle); } } } </script> ``` ### 注意事项 - 确保滚动表格所在的容器有一个唯一的ID,这里使用`#pdfDom`作为示例。 - `html2canvas`在处理跨域资源时可能会有问题,可通过设置`allowTaint: true`来开启跨域支持。 - 调整`scale`参数可以提升画面质量,但会增加生成的PDF文件大小。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值