如何使用 pdfMake 处理动态数据
How to use pdfMake with dynamic data
我是 angular 的新手,我正在尝试使用 pdfMake,我可以将它用于静态数据,但无法通过动态数据实现,如果你能帮助我实现,我将不胜感激这太棒了,因为我在整个互联网上都进行了搜索,但无法完全了解如何实现这一目标。提前致谢。
employees.component.ts
getAllEmployees(){
this.restService.GetAllEmployees().subscribe((res: any) => {
this.employees = res.data.employees
for(var i = 0; i< this.employees.length; i++) {
this.array = this.employees[i]
console.log(this.array)
}
})
}
generatePdf(){
const documentDefinition = this.getDocumentDefinition();
pdfMake.createPdf(documentDefinition).open();
}
getDocumentDefinition() {
return {
content: [
{
table: {
headerRows: 4,
widths: [ '*', 'auto', 100, '*' ],
body: [
[ 'Name', 'Second', 'Third', 'The last one' ],
[ this.array.firstName_FL, 'Value 2', 'Value 3', 'Value 4' ],
]
}
}
]
};
}
ExportAsPDF(){
this.generatePdf();
}
我试过使用 this.array.firstName_FL 但是它只提供最后一个索引
尝试这样的事情。请注意,这未经测试。
getDocumentDefinition() {
return {
content: [
{
table: {
headerRows: 4,
widths: [ '*', 'auto', 100, '*' ],
body: [[ 'Name', 'Second', 'Third', 'The last one' ]]
.concat(this.employees.map((el, i) => [el.firstName_FL, el['secondPropHere'], el['thirdPropHere'], el['fourthPropHere']]))
}
}
]
};
}
抱歉格式化,如果可行请告诉我。它背后的整个想法是,最后,body
需要是一个数组数组:
- 第一个数组是 header(如 thead/tr/th)
- 第二个数组将是第一个数据行(如 tbody/tr/td)
- 第三个数组 -> 第二个数据行,依此类推
Concat 只会 return 一个新数组,其中包含 header 数组,后跟每个员工数据的数组(map
高阶函数)。
el['secondPropHere'] - just remove square brackets and use the dot notation to get your desired property for the second prop, like `el.secondProp`.
我是 angular 的新手,我正在尝试使用 pdfMake,我可以将它用于静态数据,但无法通过动态数据实现,如果你能帮助我实现,我将不胜感激这太棒了,因为我在整个互联网上都进行了搜索,但无法完全了解如何实现这一目标。提前致谢。
employees.component.ts
getAllEmployees(){
this.restService.GetAllEmployees().subscribe((res: any) => {
this.employees = res.data.employees
for(var i = 0; i< this.employees.length; i++) {
this.array = this.employees[i]
console.log(this.array)
}
})
}
generatePdf(){
const documentDefinition = this.getDocumentDefinition();
pdfMake.createPdf(documentDefinition).open();
}
getDocumentDefinition() {
return {
content: [
{
table: {
headerRows: 4,
widths: [ '*', 'auto', 100, '*' ],
body: [
[ 'Name', 'Second', 'Third', 'The last one' ],
[ this.array.firstName_FL, 'Value 2', 'Value 3', 'Value 4' ],
]
}
}
]
};
}
ExportAsPDF(){
this.generatePdf();
}
我试过使用 this.array.firstName_FL 但是它只提供最后一个索引
尝试这样的事情。请注意,这未经测试。
getDocumentDefinition() {
return {
content: [
{
table: {
headerRows: 4,
widths: [ '*', 'auto', 100, '*' ],
body: [[ 'Name', 'Second', 'Third', 'The last one' ]]
.concat(this.employees.map((el, i) => [el.firstName_FL, el['secondPropHere'], el['thirdPropHere'], el['fourthPropHere']]))
}
}
]
};
}
抱歉格式化,如果可行请告诉我。它背后的整个想法是,最后,body
需要是一个数组数组:
- 第一个数组是 header(如 thead/tr/th)
- 第二个数组将是第一个数据行(如 tbody/tr/td)
- 第三个数组 -> 第二个数据行,依此类推
Concat 只会 return 一个新数组,其中包含 header 数组,后跟每个员工数据的数组(map
高阶函数)。
el['secondPropHere'] - just remove square brackets and use the dot notation to get your desired property for the second prop, like `el.secondProp`.