每页一个元素"/>
pdfkit nodejs,第 2 页中的每页一个元素
我使用 pdfkit 生成 pdf 发票。 当我的所有内容都适合一页时,我就没有问题了。
但是,当它不适合并且需要额外的页面时,我有一个奇怪的行为: 它没有添加第二页中的元素,而是只添加一行,页面的其余部分为空白。 然后在第三页上我有另一个元素,其余的为空白,然后是第四页,第五页等等。
这部分对应的代码如下:
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);
}
基本上我只是迭代一系列产品。对于每一行,我的 Y 位置都有 +20。
感谢您的帮助。
回答如下:
如果有人遇到这个问题,这里有一个解决方案:
在代码中的每个地方,我都知道可以生成额外的页面,我添加以下内容:
if (this.position > 680) {
doc.addPage();
this.position = 50;
}
它允许您控制新页面的生成(而不是 pdfkit 自动执行此操作,但存在潜在问题)
您只需要从“this.position”的初始化开始跟踪位置即可。 这样,每当它比 Y 位置优越时(在我的例子中是 680,它比 pdfkit 的页面要少一些),你只需执行“doc.addPage()”,这将创建另一个页面,然后重新初始化你的位置到新页面的开头。
更多推荐
pdfkit nodejs,第 2 页中的每页一个元素
发布评论