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

问题描述

我有一个函数,可以根据数组生成一行数据。第一页工作正常,但是一旦数据在doc.text("exmaple",70,560)附近溢出,则将Y坐标设置为560,它将转到下一页。但除此之外,下一次迭代应导致doc.text("example2,600)进入下一页的第三页和第四页,依此类推。此行为是意外的,因为它应该在第二页中创建一个新行。完整的代码在下面列出。我不是JS和node的专家,所以也许犯了一些愚蠢的错误。如上所述,问题从数组的第10个项开始或y坐标为560

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

const productCodes = ['JD100979758','JD4010069','JD5879085','JD7515824','JD7517614','JD100979758','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,position)
        }
}
generateDexTable(doc,productCodes)

我确实创建了一个冗余阵列来模拟此错误。这将创建26页的pdf输出,而预期的输出要少得多。我实质上想通过此工具包创建一种发票。

谢谢

解决方法

我认为您可以通过使用文本块和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();
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...