当我尝试在内容中推送多个表时, pdfMake内容错误



我正在用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],
]
...

最新更新