Node JS & pdfkit - addPage() loop

Node JS & pdfkit - addPage() loop

本文关键字:addPage loop pdfkit JS amp Node      更新时间:2023-09-26

我正在使用Node.js和pdfkit来生成名称标签。目标是发送一组人员对象,其中包含每个人的名字和姓氏以及标签的数量qty。这是我想出的:

var PDFDocument = require('pdfkit');
var people = [
    {qty:2, first:'Bob', last:'Hope'},
    {qty:3, first:'Bing', last:'Crosby'}
];
function makePDF (people) {
    var doc = new PDFDocument({
        size: [165,288],
        margins: 1
    }),
    firstTag = true;
    doc.rotate(90);
    // Loop through each person
    for (var i = 0; i < people.length; i++) {
        // Generate each name tag
        for (var x = 0; x < people[i].qty; x++) {
            if (firstTag) {// First page is automatically created
                firstTag = false;
            } else {// The rest must be added
                doc.addPage();
            }
            doc.fontSize(40).text(people[i].first, 13, -150);
            doc.fontSize(16).text(people[i].last, 15, -117);
        }
    }
    doc.write('tags.pdf');
}
makePDF(people);

这会生成一个 5 页的 pdf(它应该有一个人的 2 个和另一个人的 3 个)——但只有第一个标签上有信息,其余的都是空白的。

在这种情况下,如何正确使用addPage()?还是有更好的方法来获得相同的结果?

想通了 - 显然每次我添加新页面时,我都必须旋转它。

16号线的doc.addPage()变为doc.addPage().rotate(90)