纯前端预览并且导出pdf----js将table预览为pdf、并导出为pdf

首先看需求,页面上会渲染出一个表格,可以预览为pdf、并且导出为pdf:
在这里插入图片描述
当点击预览pdf按钮,则在iframe的地方预览:
在这里插入图片描述
点击导出pdf按钮,则导出这个table为pdf:
在这里插入图片描述

实现过程:

首先看看官网API,这个库可以将table导出为很多形式:
在这里插入图片描述
我主要说的是导出为pdf格式,要看看它的分支jsPDF-AutoTable的API介绍,用法和配置项很详细,主要看examples文件夹里面的示例:

//  html  样式就不写了,自行修改

<button id="download-btn" class="pure-button">导出 PDF</button>
<button id="preiew-btn" class="pure-button">预览pdf</button>

<!-- 预览区 注意加上宽高尺寸,  你可以开始隐藏它,点击预览再显示 -->
<div id="wrapper">
  <iframe id="output"></iframe>
</div>

<!-- table -->
<table id="basic-table" border="1">
    <thead>
    <tr>
        <th>ID</th>
        <th>First name</th>
        <th>Last name</th>
        <th>Email</th>
        <th>Country</th>
        <th>IP-address</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>1</td>
        <td>Donna</td>
        <td>Moore</td>
        <td>dmoore0@furl.net</td>
        <td>China</td>
        <td>211.56.242.221</td>
    </tr>
    <tr>
        <td>2</td>
        <td>Janice</td>
        <td>Henry</td>
        <td>jhenry1@theatlantic.com</td>
        <td>Ukraine</td>
        <td>38.36.7.199</td>
    </tr>
    <tr>
        <td>3</td>
        <td>Ruth</td>
        <td>Wells</td>
        <td>rwells2@constantcontact.com</td>
        <td>Trinidad and Tobago</td>
        <td>19.162.133.184</td>
    </tr>
    <tr>
        <td>4</td>
        <td>Jason</td>
        <td>Ray</td>
        <td>jray3@psu.edu</td>
        <td>Brazil</td>
        <td>10.68.11.42</td>
    </tr>
    <tr>
        <td>5</td>
        <td>Jane</td>
        <td>Stephens</td>
        <td>jstephens4@go.com</td>
        <td>United States</td>
        <td>47.32.129.71</td>
    </tr>
    <tr>
        <td>6</td>
        <td>Adam</td>
        <td>Nichols</td>
        <td>anichols5@com.com</td>
        <td>Canada</td>
        <td>18.186.38.37</td>
    </tr>
    </tbody>
</table>





//  js

<script src="libs/jspdf.min.js"></script>
<script src="../dist/jspdf.plugin.autotable.js"></script>
<script>
    // 导出pdf
    document.getElementById('download-btn').onclick = function () {
        update(true);
    };
    // 预览
    document.getElementById('preiew-btn').onclick = function () {
        update()
    }

    function update(shouldDownload) {
        shouldDownload = shouldDownload || false;    // 预览还是导出
        var doc = new jsPDF('p', 'pt');          // 初始化示例,更多配置项看官网api
        doc.text("From HTML", 40, 50);           // 表title、距离左边距离、距离上边距离
        var res = doc.autoTableHtmlToJson(document.getElementById("basic-table"));        // 获取当前表格的数据
        doc.autoTable(res.columns, res.data, {startY: 60});    // 渲染数据,列、数据、距离上边距离,更多配置项看官网api

        if (shouldDownload) {
            doc.save('tableName.pdf');    // 导出名为tableName.pdf的文件
        } else {
            // doc.output('datauristring'):pdf预览的地址,一段base64地址 
            document.getElementById("output").src = doc.output('datauristring');
        }
    }
</script>

就酱~

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用 `vue-pdf` 插件来导出 `el-table` 为 PDF 格式。以下是一个简单的示例: 1. 首先,确保您已安装了 `vue-pdf` 插件。您可以使用以下命令来安装: ``` npm install vue-pdf --save ``` 2. 在您的组件中,引入 `vue-pdf` 和 `html2canvas`: ```javascript import VuePDF from 'vue-pdf' import html2canvas from 'html2canvas' ``` 3. 创建一个方法来触发导出 PDF 的操作: ```javascript methods: { exportToPDF() { // 获取 el-table 的 DOM 元素 const table = document.querySelector('#your-el-table-id') // 使用 html2canvas 将 el-table 转为 canvas html2canvas(table).then(canvas => { // 创建一个新的 PDF 对象 const pdf = new jsPDF() // 计算 canvas 的宽度和高度 const width = canvas.width const height = canvas.height // 将 canvas 转为图片,并将其添加到 PDF 中 const imgData = canvas.toDataURL('image/png') pdf.addImage(imgData, 'PNG', 0, 0, width, height) // 保存或下载 PDF 文件 pdf.save('table.pdf') }) } } ``` 4. 在模板中,添加一个按钮来触发导出 PDF 的方法: ```html <template> <div> <el-table :data="tableData" id="your-el-table-id"> <!-- 表格列定义 --> </el-table> <button @click="exportToPDF">导出PDF</button> </div> </template> ``` 请注意,上述示例中的 `#your-el-table-id` 需要替换为您实际使用的 el-table 的 ID。此外,您可能还需要根据您的需求对导出PDF 进行样式调整。 希望这对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值