用pdfMake转换JSON数据

时间:2019-04-05 14:34:33

标签: javascript jquery json function pdfmake

我有一个code snippet from bpampuch,可将JSON数据转换为pdf。以前对我有用,但是当我链接自己的本地JSON文件时,它停止工作。我不是100%不确定要转换自己的JSON数据需要做哪些修复---我认为它与for ((i=1;i<100;i++)); do k=$(printf '%03d' ${i}) ... 行有关(请参阅下文),但是我不知道还有什么。有什么想法吗?

JS代码段:

data.jsonData.forEach

JSON代码段:

import $ from 'jquery';
import jsonData from "./test.json";
import pdfMake from 'pdfmake/build/pdfmake.min.js';

function _buildTableBody(data, cols) {
        let body = [];  
        body.push(cols);

        data.jsonData.forEach(function(row) { // reg obj doesn't have forEach
            let dataRow = [];

            cols.forEach(function(column) {
                dataRow.push(row[column].toString());
            })

            body.push(dataRow);
        });

        return body;
    }

    function _table(data, cols) {
        return {
            table: {
                headerRows: 1,
                body: _buildTableBody(data, cols)
            }
        };
    }

    function _printFunc() {
        var docDefinition = {
            content: [
                { text: 'Dynamic Parts', style: 'header' },
                _table(jsonData.d.results[0].Title, ['Title'])
            ]
        };

        pdfMake.createPdf(docDefinition).download(name + '.pdf');
        console.log(docDefinition.content)
    }

    $("#pdf-trigger").on("click", _printFunc)

1 个答案:

答案 0 :(得分:1)

您的json文件显然与演示文件的格式不同。尝试从遇到问题的行中删除.jsonData:

data.forEach(function(row) { // reg obj doesn't have forEach

再往下走,你有这行

_table(jsonData.d.results[0].Title, ['Title'])

将其保留为数组

_table(jsonData.d.results, ['Title'])