How do we do the same for column headers ?
my function node
[{"id":"36c750e217537997","type":"function","z":"281cdefb6b284529","name":"data to pdf","func":"///\nlet query0Data = []\nmsg.payload.query0.forEach(obj => {\n query0Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n })\n\nlet query1aData = []\nmsg.payload.query1a.forEach(obj => {\n query1aData.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet query1bData = []\nmsg.payload.query1b.forEach(obj => {\n query1bData.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet querys5Data = []\nmsg.payload.querys5.forEach(obj => {\n querys5Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet querys6Data = []\nmsg.payload.querys6.forEach(obj => {\n querys6Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet querys7Data = []\nmsg.payload.querys7.forEach(obj => {\n querys7Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet querys8Data = []\nmsg.payload.querys8.forEach(obj => {\n querys8Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet querys9Data = []\nmsg.payload.querys9.forEach(obj => {\n querys9Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\nlet querys10Data = []\nmsg.payload.querys10.forEach(obj => {\n querys10Data.push(Object.entries(obj).map(([key, value]) => { return !isNaN(value) ? { text: value, alignment: 'right' } : { text: value, alignment: 'left' } }))\n})\n\n\n///\n\n\n\nlet tableData = {\n\n// pageSize: 'a3',\n pageSize: {\n width: 1000,\n height: 'auto'\n },\n pageOrientation: 'portrait',\n content: [\n { text: flow.get(\"pdf_header2\"), fontSize: 20, bold: true, alignment: 'center', color: 'green', margin: [12, 0, 12, 0] },\n { text: '', fontSize: 20, bold: true, margin: [0, 0, 0, 0] },\n\n\n{\n\t\t\talignment: 'left',\n\t\t\tcolumns: [\n\n { text: flow.get(\"m\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n { text: flow.get(\"m1a\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n { text: flow.get(\"m1b\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n\n ]},\n \n{\t\t\talignment: 'justify',\n\t\t\tcolumns: [\n\n// Table 1\n\n\n {\n style: 'tableExample1',\n \n table: {\n headerRows: 1,\n widths: [200, 53],\n body: [\n Object.keys(msg.payload.query0[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...query0Data\n ]\n },\n layout: 'lightHorizontalLines'\n },\n// Table 2\n\n\n {\n style: 'tableExample',\n \n table: {\n headerRows: 1,\n widths: [200, 53],\n body: [\n Object.keys(msg.payload.query1a[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...query1aData\n ]\n },\n layout: 'lightHorizontalLines',\n },\n\n// Table 3\n\n {\n style: 'tableExample',\n\n table: {\n headerRows: 1,\n widths: [200, 53],\n body: [\n Object.keys(msg.payload.query1b[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...query1bData\n ]\n },\n layout: 'lightHorizontalLines'\n },\n \n ]},\n \n{ text: '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------', fontSize: 10, bold: false, color: 'orange', margin: [0, 0, 0, 5] },\n { text: 'TOP 10 DOWNTIME REASONS FOR THE DAY SHIFT WISE', fontSize: 14,alignment:'centre', bold: false, color: 'BLUE', margin: [0, 0, 0, 5] },\n\n//\n\n {\n\t\t\talignment: 'center',\n\t\t\tcolumns: [\n \n \n { text: flow.get(\"top10dta\"), fontSize: 14, bold: true, color: 'black', margin: [0, 0, 0, 5] },\n { text: flow.get(\"top10dtb\"), fontSize: 14, bold: true, color: 'black', margin: [0, 0, 0, 5] },\n { text: flow.get(\"top10dtc\"), fontSize: 14, bold: true, color: 'black', margin: [0, 0, 0, 5] },\n \n ]},\n \n {\n\t\t\talignment: 'centre',\n\t\t\tcolumns: [\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [150, 100],\n body: [\n Object.keys(msg.payload.querys5[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...querys5Data\n ]\n },\n layout: 'lightHorizontalLines'\n },\n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [150, 100],\n body: [\n Object.keys(msg.payload.querys6[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...querys6Data\n ]\n },\n layout: 'lightHorizontalLines'\n },\n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [150, 100],\n body: [\n Object.keys(msg.payload.querys7[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...querys7Data\n ]\n },\n layout: 'lightHorizontalLines'\n }\n ]},\n \n\n{ text: '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------', fontSize: 10, bold: false, color: 'orange', margin: [0, 0, 0, 5] },\n { text: 'MACHINE WISE DOWNTIMES FOR THE DAY SHIFT WISE', fontSize: 14,alignment:'centre', bold: false, color: 'BLUE', margin: [0, 0, 0, 5] },\n\n \n {\n\t\t\talignment: 'centre',\n\t\t\tcolumns: [\n \n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [150, 100],\n body: [\n Object.keys(msg.payload.querys8[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...querys8Data\n ]\n },\n layout: 'lightHorizontalLines'\n },\n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [150, 100],\n body: [\n Object.keys(msg.payload.querys9[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...querys9Data\n ]\n },\n layout: 'lightHorizontalLines'\n },{\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [150, 100],\n body: [\n Object.keys(msg.payload.querys10[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...querys10Data\n ]\n },\n layout: 'lightHorizontalLines'\n }\n \n \n \n ]},\n \n\n\n// Table 3\n { text: flow.get(\"m00\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query2[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query2.map(obj => Object.values(obj))\n ]\n },\n layout: 'lightHorizontalLines'\n },\n// Table 4\n { text: flow.get(\"m01\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query3[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query3.map(obj => Object.values(obj))\n ]\n },\n layout: 'lightHorizontalLines'\n },\n// Table 5\n { text: flow.get(\"m02\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query4[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query4.map(obj => Object.values(obj))\n ]\n },\n layout: 'lightHorizontalLines'\n },\n// Table 6\n { text: flow.get(\"m03\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query5[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query5.map(obj => Object.values(obj))\n ]\n },\n layout: 'lightHorizontalLines'\n },\n// Table 7\n { text: flow.get(\"m04\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query6[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query6.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 8\n { text: flow.get(\"m05\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query7[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query7.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 9\n { text: flow.get(\"m06\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query8[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query8.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 10\n { text: flow.get(\"m07\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query9[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query9.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 11\n { text: flow.get(\"m08\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query10[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query10.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 12\n { text: flow.get(\"m09\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query11[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query11.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 13\n { text: flow.get(\"m10\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query12[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query12.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 14\n { text: flow.get(\"m11\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query13[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query13.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 15\n { text: flow.get(\"m12\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query14[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query14.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 16\n { text: flow.get(\"m13\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query15[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query15.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 17\n { text: flow.get(\"m14\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query16[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query16.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 18\n { text: flow.get(\"m15\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query17[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query17.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 19\n { text: flow.get(\"m16\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query18[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query18.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n },\n// Table 20\n { text: flow.get(\"m17\"), fontSize: 14, bold: true, margin: [12, 5, 12, 5] },\n \n {\n style: 'tableExample',\n table: {\n headerRows: 1,\n widths: [50, 30, 80, 80, 50, 240, 240],\n body: [\n Object.keys(msg.payload.query19[0]).map(key => { return { text: key, style: 'tableHeader' } }),\n ...msg.payload.query19.map(obj => Object.values(obj))\n ]\n },\n \n layout: 'lightHorizontalLines'\n }\n \n \n \n \n \n \n// \n ],\n \n styles: {\n header: {\n fontSize: 12,\n bold: true,\n margin: [12, 2, 12, 2]\n },\n subheader: {\n fontSize: 12,\n bold: true,\n margin: [12, 2, 12, 2]\n },\n tableExample: {\n fontSize: 10,\n bold: false,\n },\n tableExample1: {\n fontSize: 12,\n bold: false,\n },\n tableHeader: {\n bold: true,\n fontSize: 12,\n color: 'red'\n }\n },\n defaultStyle: {\n // alignment: 'justify'\n }\n\n};\n\nmsg.payload = tableData;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1950,"y":2940,"wires":[["40d529f50ed4be79"]]}]