使用 jsPDF- Autotable 将 HTML 表格导出为 PDF

介绍 

 
您一定从 Internet 下载过 PDF 文件。它可能是考试表格、费用收据、发票或任何此类文件。您有没有想过这些内容是如何一键以 PDF 的形式下载的?今天,我们将在本文中执行相同的操作。只会有一点点变化。在这里,我们将学习如何以 PDF 的形式导出表格。
 
在本文中,我们将了解 jsPDF - AutoTable 并使用 jsPDF - AutoTable 将简单的 HTML 表格导出为 PDF。
 
在开始使用它之前,让我们先了解什么是 jsPDF 和 jsPDF - AutoTable?
 
jsPDF 是一个用于将 HTML 网页导出为 PDF 文件的库。从单个字母到图像,您可以将 HTML 内容导出为 PDF 文件。
 
此外,您可以使用 jsPDF 根据您希望在 PDF 中使用的格式修改内容。 
 
有关 jsPDF 的更多信息和示例,您可以参考以下链接:
  • https://github.com/MrRio/jsPDF 
  • https://www.npmjs.com/package/jspdf
  • https://micropyramid.com/blog/export-html-web-page-to-pdf-using-jspdf/
jsPDF - AutoTable 是一个帮助我们将 HTML 表格导出为 PDF 的插件。只需将此插件添加到项目中,您就可以轻松导出 HTML 表格。
此外,它包含 3 个主题:
  • 有条纹的
  • 网格
  • 清楚的
我们将在示例项目中导出所有 3 个主题中的表格。
 
有关 jsPDF - AutoTable 的更多信息,请参考以下链接:
  • https://www.npmjs.com/package/jspdf-autotable
  • https://github.com/simonbengtsson/jsPDF-AutoTable
先决条件
  • 视窗操作系统 / Mac 操作系统
  • 适用于 Mac 的 Visual Studio/Visual Studio。 
所以让我们开始吧。
 
打开 Visual Studio 并创建一个 ASP.NET 项目。您可以创建 ASP.NET Web 窗体或 ASP.NET MVC 项目。在这里,我使用了 ASP.NET MVC。
 
 
或者 
  • 打开 Views -> Home 文件夹中的 Index.cshtml。 
  • 如果您已创建 ASP.NET Web 窗体项目,请打开 Default.aspx 文件。
  • 在这里,我们将设计我们的 HTML 表格。我创建了一个简单的表格,其中包含学生及其分数的列表。复制并粘贴以下代码。如果您想设计自己的 HTML 表格,您也可以这样做。
<!DOCTYPE html>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/ClientSide/html.html to edit this template
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.6/jspdf.plugin.autotable.min.js"></script>
        <style>
            th, td {
                text-align: center;
                border: 1px solid black;
                border-collapse: collapse;
            }
        </style>
    </head>
    <body>

    <center>
        <h2>TOTAL MARKS OF STUDENTS</h2>
        <br />
        <table id="simple_table">
            <tr>
                <th>Roll No.</th>
                <th>Name</th>
                <th>Marks</th>
            </tr>
            <tr>
                <td>1</td>
                <td>Anna</td>
                <td>85</td>
            </tr>
            <tr>
                <td>2</td>
                <td>Bhavesh</td>
                <td>72</td>
            </tr>
            <tr>
                <td>3</td>
                <td>Sandhya</td>
                <td>63</td>
            </tr>
            <tr>
                <td>4</td>
                <td>Rohan</td>
                <td>90</td>
            </tr>
            <tr>
                <td>5</td>
                <td>Leena</td>
                <td>82</td>
            </tr>
            <tr>
                <td>6</td>
                <td>Nayan</td>
                <td>56</td>
            </tr>
        </table>
        <br />
        <input type="button" onclick="generate()" value="Export To PDF" />
    </center>
    <script type="text/javascript">
        function generate() {
            var doc = new jsPDF('p', 'pt', 'letter');
            var htmlstring = '';
            var tempVarToCheckPageHeight = 0;
            var pageHeight = 0;
            pageHeight = doc.internal.pageSize.height;
            specialElementHandlers = {
                // element with id of "bypass" - jQuery style selector
                '#bypassme': function (element, renderer) {
                    // true = "handled elsewhere, bypass text extraction"
                    return true
                }
            };
            margins = {
                top: 150,
                bottom: 60,
                left: 40,
                right: 40,
                width: 600
            };
            var y = 20;
            doc.setLineWidth(2);
            doc.text(200, y = y + 30, "TOTAL MARKS OF STUDENTS");
            doc.autoTable({
                html: '#simple_table',
                startY: 70,
                theme: 'grid',
                columnStyles: {
                    0: {
                        cellWidth: 180,
                    },
                    1: {
                        cellWidth: 180,
                    },
                    2: {
                        cellWidth: 180,
                    }
                },
                styles: {
                    minCellHeight: 40
                }
            })
            doc.save('Marks_Of_Students.pdf');
        }
    </script>
</body>
</html>

笔记
在上面的代码中,我直接使用了 <script> 标签中的插件链接。如果您已经下载了插件并在项目中导入了文件,则在 <script> 标签的 src 属性中分配它们的路径。此外,您可以在浏览器上运行插件链接并通过在项目中创建扩展名为 .min.js 的新 javascript 文件来保存整个脚本。但请确保在 <script> 标签的 src 属性中指定这些文件的路径。
  • 在上面的代码中,您可以看到我们为 <table> 标签分配了一个 id,即 simple_table,并且我们在 doc.autotable() 中使用了相同的 id。 
  • jsPDF - autotable 搜索 id 并导出具有特定 id 的表。
  • 我们完了!对于 Web 窗体,我们不需要在 MVC 项目/ Default.aspx 文件中的 Index.cshtml 文件以外的任何其他文件中编写任何内容。
  • 让我们运行项目并检查它是否有效。
  • 单击导出按钮。将下载一个 pdf 文件。打开下载的文件,您将以类似的方式获得输出。
  • 在上面的代码中,我们将主题指定为“网格”。将主题更改为“条纹”和“普通”并重新运行项目。
  • 如果您已将主题指定为“条纹”,则必须获得以下输出。
  • 如果您已将主题指定为“普通”,则必须获得以下输出。
因此,我们学会了使用 jsPDF - autotable 插件将 HTML 表格导出为 PDF。
 
我希望你喜欢这篇文章。如果您有任何想法/建议,或者您可以在本文中提出任何改进建议,请分享。
 
快乐编码! 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值