使用 pdfMake 转换 JSON 数据

Converting JSON data with pdfMake

我有一个 code snippet from bpampuch 可以将 JSON 数据转换为 pdf。它以前对我有用,但是当我链接我自己的本地 JSON 文件时它停止工作了。我不是 100% 确定我需要做什么修复才能让我自己的 JSON 数据被转换---我认为它与 data.jsonData.forEach 行有关(见下文),但我不确定还有什么。对此有什么想法吗?

JS 片段:

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)

JSON 片段:

{
  "d": {
    "results": [
      {
        "FileSystemObjectType": 0,
        "Id": 1,
        "Title": "TitleHere",
        "GoalRange": "3",
        "Office": "Somewhere",
        "Role": "FPSL",
        "IsFilled": false,
        "Employee": null,
        "IsActive": true,
        "Notes": null,
        "ID": 1,
        "Attachments": false
...etc

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

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

再往下,你有这条线

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

保留为数组

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