Place PDF logo at absolute 10mm from top-left, above all content

Logo is now pinned to an absolute position (10mm from top, 10mm from
left) independent of the content cursor, so it can never overlap any
form elements. The cursor y is pushed below the logo bottom before
the title and remaining header elements are drawn.

https://claude.ai/code/session_016aNBqHpiQciTr1DvNvE7nk
This commit is contained in:
Claude 2026-05-19 09:26:47 +00:00
parent 9749b70fe2
commit 66396219af
No known key found for this signature in database

View file

@ -564,20 +564,24 @@ async function generatePDF() {
addPage(true);
// Logo + title
let headerBlockH = szLg;
const mm10 = 10 * 2.83465; // 10 mm in points
if (logoImage) {
const maxW = (CFG['logo-maxwidth'] || 4) * 28.3465;
const scale = Math.min(maxW / logoImage.width, 50 / logoImage.height, 1);
const lw = logoImage.width * scale, lhh = logoImage.height * scale;
pg.drawImage(logoImage, { x: M.left, y: y - lhh, width: lw, height: lhh });
headerBlockH = Math.max(lhh, szLg);
// Absolute position: 10 mm from top-left, above all other content
const logoTop = pageH - mm10;
pg.drawImage(logoImage, { x: mm10, y: logoTop - lhh, width: lw, height: lhh });
// Push cursor below logo with a small gap before remaining header elements
y = Math.min(y, logoTop - lhh - 8);
} else if (CFG.organization) {
pg.drawText(CFG.organization, { x: M.left, y, size: szLg, font: fontBold, color: accent });
y -= szLg + 8;
}
const titleStr = 'REIMBURSEMENT FORM';
const tw = fontBold.widthOfTextAtSize(titleStr, szLg);
pg.drawText(titleStr, { x: M.left + W - tw, y: y - szLg, size: szLg, font: fontBold, color: accent });
y -= headerBlockH + 8;
pg.drawText(titleStr, { x: M.left + W - tw, y, size: szLg, font: fontBold, color: accent });
y -= szLg + 8;
// Intro text
if (CFG.intro) {