Преобразование данных JSON с помощью pdfMake - PullRequest
1 голос
/ 05 апреля 2019

У меня есть фрагмент кода из 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

1 Ответ

1 голос
/ 05 апреля 2019

Ваш файл json явно не в том же формате, что и демонстрационная версия.Попробуйте удалить .jsonData из строки, с которой у вас возникла проблема:

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

И далее, у вас есть эта строка

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

Оставьте ее в виде массива

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