Node.js pdfkit节点,第2页的每页一个元素

Node.js pdfkit节点,第2页的每页一个元素,node.js,pdfkit,node-pdfkit,Node.js,Pdfkit,Node Pdfkit,Im使用pdfkit生成pdf发票。 当我所有的内容都放在一个页面上时,我就没有问题了 然而,当它不适合并且需要额外的页面时,我有一个奇怪的行为: 它不在第二个页面中添加元素,而是只添加一行,页面的其余部分为空。 然后在第3页我有另一个元素,其余的是空白,然后是第4页,第5页等等 以下是与此部分对应的代码: for (let i = 0; i < data.items.length; i++) { const item = data.items[i]; th

Im使用pdfkit生成pdf发票。 当我所有的内容都放在一个页面上时,我就没有问题了

然而,当它不适合并且需要额外的页面时,我有一个奇怪的行为: 它不在第二个页面中添加元素,而是只添加一行,页面的其余部分为空。 然后在第3页我有另一个元素,其余的是空白,然后是第4页,第5页等等

以下是与此部分对应的代码:

for (let i = 0; i < data.items.length; i++) {
        const item = data.items[i];
        this.itemPositionY = this.itemPositionY + 20;
        if (item.bio) this.containBioProduct = true;
        let itemName = item.bio ? `${item.item}*` : item.item;
        this.generateTableRow(
            doc,
            this.itemPositionY,
            itemName,
            "",
            this.formatCurrency(item.itemPriceDf.toFixed(2)),
            item.quantity,
            this.formatCurrency(item.itemPriceTotalDf.toFixed(2))
        );
        this.generateHr(doc, this.itemPositionY + 15);
    }
for(设i=0;i
基本上我只是迭代一系列产品。对于每条线,我的Y位置有+20

谢谢你的帮助


如果有人遇到此问题,这里有一个解决方案:

在代码中我知道可以生成额外页面的任何地方,我添加了以下内容:

if (this.position > 680) {
   doc.addPage();
   this.position = 50;
}
它允许您控制新页面的生成(而不是pdfkit自动生成潜在问题)

您只需要从“this.position”的初始化开始跟踪位置。
这样,每当它比Y位置优越时(在我的例子中是680,它比带有pdfkit的页面小一点),你只需执行“doc.addPage()”,它将创建另一个页面,然后你重新初始化你的位置到新页面的开头。

嘿@arnaud,你有解决这个问题的方法吗??请和我分享tooHey@Sanjaysinzala,迟做总比不做好。。在下面检查我的答案