pdfkit nodejs, один элемент на страницу со страницы 2

Я использую 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.

Спасибо за вашу помощь.

это конец страницы 1 и начало страницы 2 Вот страница 3,только один элемент,остальное пустое


person Arnaud    schedule 19.03.2020    source источник
comment
привет, @arnaud, у тебя есть решение этой проблемы?? пожалуйста, поделитесь и со мной   -  person Sanjaysinh Zala    schedule 19.08.2020
comment
Привет, @SanjaysinhZala, лучше поздно, чем никогда. Проверьте мой ответ ниже   -  person Arnaud    schedule 05.01.2021


Ответы (1)


Если у кого-то возникнет такая проблема, вот решение:

Везде в коде я знаю, что может быть сгенерирована дополнительная страница, я добавляю это:

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

Это позволяет вам контролировать создание новых страниц (вместо того, чтобы pdfkit делал это автоматически с потенциальными проблемами)

Вам просто нужно отслеживать позицию с момента инициализации this.position. Таким образом, каждый раз, когда она выше, чем позиция Y (680 в моем случае, это немного меньше, чем страница с pdfkit), вы просто выполняете doc.addPage(), которая создаст другую страницу, и вы повторно инициализируете свою позицию в начало новой страницы.

person Arnaud    schedule 05.01.2021