【问题标题】:convert json data to pdf using jQuery使用jQuery将json数据转换为pdf
【发布时间】:2020-05-15 22:40:52
【问题描述】:

我想在不使用任何第三方插件的情况下将 JSON 数据导出为 pdf。我在 Json 中有数据,需要使用 JQuery 在 pdf 表结构中显示数据。如果可能,请告诉我。

这里是示例 JSON

 jsonResult.Products[         
       {PRODUCT_ID: 123, PRODUCT_NUMBER: "00022", PRODUCT_NAME: "HONDA", PRODUCT_TYPE: "VEHICLE "},
       {PRODUCT_ID: 783, PRODUCT_NUMBER: "08412394", PRODUCT_NAME: "HONDA", PRODUCT_TYPE: "MOTOR "}.....]

使用 jS PDF-autotable 编写代码 sn-p

<script src="~/Scripts/JsPDF-Autotable.js"></script>

 $("#btnExportPDF").click(function () {

        let table = document.createElement('table');
        table.setAttribute("id", "pdfTable");
        let thead = document.createElement('thead');
        let tbody = document.createElement('tbody');
        let thead_tr = document.createElement('tr');

        let sample = dataResult.Cases[0];

        let columns = [];
        let columnData = [];

        for (let column in sample) columns.push(column);

        for (let i = 0; i < columns.length; i++) {
            let th = document.createElement('th');
            th.innerText = columns[i];
            thead_tr.appendChild(th);
        }
        thead.appendChild(thead_tr);
        for (let i = 0; i < dataResult.Cases.length; i++) {
            let tr = document.createElement('tr');
            let product = dataResult.Cases[i];
            for (let column = 0; column < columns.length; column++) {
                let td = document.createElement('td');
                td.innerText = product[columns[column]];
                columnData.push(product[columns[column]]);
                tr.appendChild(td);
            }
            tbody.appendChild(tr);
        }
        table.appendChild(thead);
        table.appendChild(tbody);
        var doc = new jsPDF('p', 'pt');
        doc.autoTable(columns, columnData)
        doc.save("table.pdf");
    });

我尝试使用 jspdf autotable 导出为 pdf,但出现以下错误

JsPDF-Autotable.js:1538 Use of deprecated autoTable initiation

【问题讨论】:

  • 请包含所有相关代码,包括当前正在将html表格导出为pdf的代码。
  • @HereticMonkey - 添加了用于转换为 PDF 的代码 sn-p
  • 该代码不会将任何内容转换为 PDF。它会显示一个对话框,如果用户具有“打印到 PDF”功能,他们可以将页面打印到 PDF。

标签: javascript jquery json


【解决方案1】:

是的,这绝对是可能的。

过程很简单:

  1. 准备您的 JSON 数据
  2. 创建一个用您的数据填充的表格元素
  3. 使用JSPDF 导出表

创建表格

let table = document.createElement('table');
let thead = document.createElement('thead');
let tbody = document.createElement('tbody ');
let thead_tr = document.createElement('tr');

let sample = jsonResult.Products[0];

let columns = [];

for (let column in sample) columns.push(column);

for (let i = 0; i<columns.length;i++){
    let th = document.createElement('th');
    th.innerText = columns[i];
    thead_tr.appendChild(th);
}       
thead.appendChild(thead_tr);
for (let i = 0; i<jsonResult.Products.length;i++){
    let tr = document.createElement('tr');
    let product = jsonResult.Products[i];
    for (let column = 0; column < columns.length; column++){
        let td = document.createElement('td');
        td.innerText = product[columns[column]];
        tr.appendChild(td);
    }
    tbody.appendChild(tr);
}
table.appendChild(thead);
table.appendChild(tbody);
document.body.appendChild(table); // Now this is your table which you are going to export

Follow this SOanswer/guide 用 JSPDF 导出 HTML 表格

【讨论】:

  • 来自 OP:“没有 [原文如此] 使用任何第三方插件”...
  • 好吧,@HereticMonkey,如果您从 jsPDF 库中删除相关代码位,可能的。但谁愿意这样做?!?康斯坦丁展示了一种至少可以在没有任何客户端 PDF 创建功能的情况下完成这项工作的方法。
  • @Constantin Teo-我尝试使用提供的代码并使用 JsPDF。数据未正确对齐,第一页出现对齐问题后页面为空。因为我有 15 列和 3k 行数据.如何使用 JsPDF 将这些内容放入 pdf 中。我尝试使用 JSPDF.Autotable,这给了我错误:“无法在 'document' 上执行 'queryselector'”
  • @AMDI 请使用相关材料更新您的问题,以提供足够的数据让我们理解您的问题。
  • @ConstantinTeo - 我已经更新了我使用 JSPDF-AutoTable 的代码
猜你喜欢
  • 1970-01-01
  • 2017-12-01
  • 2010-10-07
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2018-06-24
  • 2019-09-13
  • 1970-01-01
相关资源
最近更新 更多