From 51e0182399a87d0e81641be6f986b50171562bf1 Mon Sep 17 00:00:00 2001 From: odweta Date: Thu, 10 Sep 2026 17:06:13 +0200 Subject: [PATCH] Anchor PDF payment card to footer and size QR to text height Move the payment info card (account number, IBAN, SWIFT) to the bottom of the invoice page so it sits flush with the footer, and size the QR code to match the combined height of the three payment lines instead of a fixed size. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- app/src/app.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/app.js b/app/src/app.js index 60693f6..a3c19ef 100644 --- a/app/src/app.js +++ b/app/src/app.js @@ -572,16 +572,22 @@ const renderInvoicePdf = async (document, invoice) => { document.y += 35; document.moveTo(document.page.margins.left, document.y).lineTo(document.page.margins.left + pageWidth, document.y) .strokeColor(navy).lineWidth(1.5).stroke(); - document.y += 12; - const paymentTop = document.y; - document.roundedRect(document.page.margins.left, paymentTop, pageWidth, 165, 4).fillAndStroke('#f4f7fb', line); + const paymentCardHeight = 105; + const paymentTop = document.page.height - document.page.margins.bottom - paymentCardHeight; + const paymentLineHeight = 18; + const qrSize = paymentLineHeight * 3; + document.roundedRect(document.page.margins.left, paymentTop, pageWidth, paymentCardHeight, 4) + .fillAndStroke('#f4f7fb', line); document.fillColor(navy).font(boldFont).fontSize(11).text('Platební údaje', document.page.margins.left + 10, paymentTop + 10); document.fillColor(bodyText).font(regularFont).fontSize(10) .text(`Číslo účtu: ${pdfText(payment.cisloUctu)}`, document.page.margins.left + 10, paymentTop + 35) - .text(`IBAN: ${pdfText(payment.iban)}`, document.page.margins.left + 10, paymentTop + 55) - .text(`SWIFT: ${pdfText(payment.swift)}`, document.page.margins.left + 10, paymentTop + 75); + .text(`IBAN: ${pdfText(payment.iban)}`, document.page.margins.left + 10, paymentTop + 35 + paymentLineHeight) + .text(`SWIFT: ${pdfText(payment.swift)}`, document.page.margins.left + 10, paymentTop + 35 + paymentLineHeight * 2); if (qrBuffer) { - document.image(qrBuffer, document.page.margins.left + pageWidth - 155, paymentTop + 10, { width: 145, height: 145 }); + document.image(qrBuffer, document.page.margins.left + pageWidth - qrSize - 10, paymentTop + 30, { + width: qrSize, + height: qrSize + }); } document.end(); }; -- 2.54.0