PDFmake表动态数据

时间:2019-08-28 21:13:31

标签: javascript typescript pdfmake

我正在使用PDFmake创建pdf文件,我想在表中添加动态数据,但正文显示为空。

当我打印[0]时,此选项有效,但我有很多动态数据

 getData(installation, request) {
          const phases = {
            layout: {
              hLineWidth: function(i, node) {
                return 0.45;
              },
              vLineWidth: function(i, node) {
                return 0.45;
              }
            },
            table: {
              dontBreakRows: true,
              widths: ["30%", "10%", "60%"],
              body: [
                [

                  {
                    text: installation.phases[0].text,
                    style: "cell"
                  },
                  { text: installation.phases[0].status},
                  {
                    text: this.getFeedback(installation.phases[0]),
                    style: "commentCell"
                  }
                ],
              ]
            }
          };
          console.log(phases);
          return phases;
      }

但是如果我使用它,它将创建表主体为空。

  getData(installation, request) {
installation.phase.forEach(value =>{
          const phases = {
            layout: {
              hLineWidth: function(i, node) {
                return 0.45;
              },
              vLineWidth: function(i, node) {
                return 0.45;
              }
            },
            table: {
              dontBreakRows: true,
              widths: ["30%", "10%", "60%"],
              body: [
                [

                  {
                    text: data.text,
                    style: "cell"
                  },
                  { text: data.status},
                  {
                    text: this.getFeedback(data),
                    style: "commentCell"
                  }
                ],
              ]
            }
          };
          console.log(phases);
          return phases;
});
}

这可能是什么问题?我已经尝试过,但是找不到解决方法

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您的目标。

我已经重写了您的代码,并为PDF创建了JSON结构(常量阶段),然后使用由行组成的JSON数组动态填充table.body。我没有尝试运行它,因此可能存在一些编译错误。希望这会有所帮助!

getData(installation, request) {
  const phases = {
    layout: {
      hLineWidth: function(i, node) {
        return 0.45;
      },
      vLineWidth: function(i, node) {
       return 0.45;
      }
    },
    table: {
     dontBreakRows: true,
     widths: ["30%", "10%", "60%"],
     body: []
    }
   }

   installation.phases.forEach(value => {
    phases.table.body.push([
     { text: value.text, style: 'cell' },
     { text: value.status, },
     { text: this.getFeedback(value), style: 'commentCell' }
    ])
   })

  console.log(phases)
  return phases
}