0

我在循环中使用 canvas.toBuffer 为不同的内容生成 pdf,但所有生成的 pdf 都具有相同的内容。下面是我正在使用的循环片段。

for (const d of data) {
    context.clearRect(0, 0, imageWidth, imageHeight);
    context.drawImage(image, 0, 0, imageWidth, imageHeight);
    context.fillText(d.name.toUpperCase(), 1685, 1556);
    fs.writeFileSync(`./assets/certs/${d.email}.pdf`,canvas.toBuffer());
}

数据是类型,Array<{name:String, email:String}>. 该名称应该在图像上打印每个用户的名称,但事实证明所有生成的 pdf 都只有第一个用户的名称。

我尝试从画布创建一个 ReadStream 但我最终遇到了同样的问题。有什么我做错了还是我错过了什么?

4

1 回答 1

0

这是节点画布中的一个错误。toBuffer()调用 PDF 或 SVG 画布( https://github.com/Automattic/node-canvas/issues/1195 )后无法重用它。

作为一种变通方法,您可以在循环的每次迭代中创建一个新画布。

于 2019-09-18T01:30:54.623 回答