【问题标题】:pdfkit nodejs, one element per page from page 2pdfkit nodejs,从第2页开始每页一个元素
【发布时间】:2020-03-19 12:57:36
【问题描述】:

我正在使用 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);
    }

基本上我只是迭代一系列产品。对于每一行,我的 Y 位置都有 +20。

感谢您的帮助。

【问题讨论】:

  • 嘿@arnaud,你有解决这个问题的方法吗??也请分享给我
  • 嘿@SanjaysinhZala,迟到总比没有好。在下面查看我的答案

标签: node.js pdfkit node-pdfkit


【解决方案1】:

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

在我知道可以生成额外页面的代码中,我添加了这个:

if (this.position > 680) {
   doc.addPage();
   this.position = 50;
}

它允许您控制新页面的生成(而不是 pdfkit 自动执行它有潜在的问题)

您只需要从“this.position”的初始化开始跟踪位置。 这样,每次它优于 Y 位置(在我的情况下为 680,它比使用 pdfkit 的页面少一点),你只需执行“doc.addPage()”,这将创建另一个页面,然后你重新初始化你的位置到新页面的开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多