我正在用pdfMake创建一个文档。在我的文档中,我有三个表格:第一个显示了三个最好的设备,第二个显示了三个最差的设备,第三个显示了所有的设备。碰巧第一个表打印ok,但是当我尝试渲染下一个表时,它不像预期的那样工作(见下图)。代码如下:
const tableHeader = [
setTableHeader("Código"),
setTableHeader("OEE"),
setTableHeader("Disponibilidade"),
setTableHeader("Performance"),
setTableHeader("Qualidade"),
]
const equipmentsTable = [
tableHeader,
...sortedEquipsInfos.map((equip)=>[
equip.eECode,
equip.oee.toLocaleString('pt-BR', {maximumFractionDigits: 2}) + '%',
equip.availability.toLocaleString('pt-BR', {maximumFractionDigits: 2}) + '%',
equip.performance.toLocaleString('pt-BR', {maximumFractionDigits: 2}) + '%',
equip.quality.toLocaleString('pt-BR', {maximumFractionDigits: 2}) + '%',
])];
...
const contentAux = [];
contentAux.push({
table: {
body: [
equipmentsTable[0], //header
equipmentsTable[equipmentsTable.length - 3],
equipmentsTable[equipmentsTable.length - 2],
equipmentsTable[equipmentsTable.length - 1],
]
}
});
contentAux.push({
table: {
body: [
equipmentsTable[0],
equipmentsTable[1],
equipmentsTable[2],
equipmentsTable[3],
]
}
})
contentAux.push(
{
table: {
body: equipmentsTable
},
}
)
...
var pdfDoc = printer.createPdfKitDocument({
...
content: contentAux
如果对第一个表进行注释,则第二个表可以正常工作。如果我评论第一个和第二个,第三个就可以了。知道发生了什么吗?
这是由于pdfmake中一个已知的错误(或限制)造成的。
您不能在文档定义中重用相同的对象引用(在您的例子中是equipmentsTable
)。见https://github.com/bpampuch/pdfmake/issues/465
一个可能的解决方法是复制对象(在所有3种情况下):
...
const equipmentsTableCopy1 = JSON.parse(JSON.stringify(equipmentsTable));
...
[
equipmentsTableCopy1[0],
equipmentsTableCopy1[1],
equipmentsTableCopy1[2],
equipmentsTableCopy1[3],
]
...