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();
}
我有一个函数可以根据数组生成一行数据。第一页工作得很好,但一旦数据在 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();
}