PDFKIT 溢出数据进入每一行的新页面

PDFKIT over-flow data goes to newpage for each row

我有一个函数可以根据数组生成一行数据。第一页工作得很好,但一旦数据在 doc.text("exmaple",70,560) 附近的某处溢出,当 Y 坐标设置为 560 时,它会转到下一页。但除此之外,下一次迭代应该导致 doc.text("example2,70,600) 进入下一个项目的第 3 页和第 4 页,依此类推。此行为不是预期的,因为它应该在第二页中创建一个新行。完整代码如下。我不是 JS 和节点专家,所以可能会犯一些愚蠢的错误。如上所述,问题从数组的第 10 项或 y 坐标为 560 左右开始

const doc = new PDFDocument({
    layout: 'landscape'
});
doc.pipe(fs.createWriteStream('output.pdf'));

const productCodes = ['JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','JD4010069','JD5879085','JD7515824','JD7517614']
function generateDexTable(doc,product){
    let i,
    invoiceTableTop= 160;
        for(let i = 0;i<product.length;i++){
            const item = product[i]
            const position = invoiceTableTop+(i*40);
            doc.text(item,70,position)
        }
}
generateDexTable(doc,productCodes)

我真的创建了一个冗余数组来模拟这个错误。这会创建 26 页的 pdf 输出,而预期的要少得多。我基本上想通过这个工具包创建一种发票。

谢谢

我认为您可以使用 text-blocks 和 moveDown() 的默认高度来简化此操作:

function generateDexTable(doc, product) {

    for (let i = 0; i < product.length; i++) {
        const item = product[i];
        doc.text(item);
        doc.moveDown(3); // you can adjust this to get the desired margins between text blocks
    }
    doc.end();
}