From fdeb34ea3c089ef92fa2d523a57fba278f024b60 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Tue, 21 Apr 2026 15:03:47 +0200 Subject: [PATCH] fix(pdf): implement full logo, remove fixed header, add break logic --- lib/pdf-page.tsx | 23 ++++++++++------------- public/logo-full.png | Bin 0 -> 7007 bytes 2 files changed, 10 insertions(+), 13 deletions(-) create mode 100644 public/logo-full.png diff --git a/lib/pdf-page.tsx b/lib/pdf-page.tsx index 00881a34..8aeef720 100644 --- a/lib/pdf-page.tsx +++ b/lib/pdf-page.tsx @@ -1,5 +1,5 @@ import React from 'react'; -/* eslint-disable react/prop-types */ + import { Document, Page, View, Text, StyleSheet, Link, Image } from '@react-pdf/renderer'; // Standard fonts like Helvetica are built-in to PDF and don't require registration @@ -52,8 +52,8 @@ const styles = StyleSheet.create({ }, logo: { - width: 60, - height: 30, + width: 140, // Increased to fit full logo + height: 45, objectFit: 'contain', }, @@ -243,7 +243,7 @@ const renderLexicalNode = (node: any, idx: number): React.ReactNode => { case 'paragraph': { if (!node.children || node.children.length === 0) return null; return ( - + {node.children?.map((child: any, i: number) => renderLexicalNode(child, i))} ); @@ -260,14 +260,14 @@ const renderLexicalNode = (node: any, idx: number): React.ReactNode => { if (node.tag === 'h2') hStyle = styles.heading2; const content = ( - + {node.children?.map((child: any, i: number) => renderLexicalNode(child, i))} ); if (isH1) { return ( - + {content} ); @@ -283,7 +283,7 @@ const renderLexicalNode = (node: any, idx: number): React.ReactNode => { {node.children?.map((child: any, i: number) => { if (child.type === 'listitem') { return ( - + {node.listType === 'number' ? `${i + 1}.` : '•'} @@ -340,18 +340,15 @@ export const PDFPage: React.FC = ({ page, locale = 'de' }) => { day: 'numeric', }); - const logoPath = `${process.cwd()}/public/logo.png`; + const logoPath = `${process.cwd()}/public/logo-full.png`; return ( - {/* Improved Hero Header */} - + {/* Improved Hero Header - No longer fixed so it doesn't repeat on all pages */} + - - {locale === 'en' ? 'Official Document' : 'Offizielles Dokument'} - diff --git a/public/logo-full.png b/public/logo-full.png new file mode 100644 index 0000000000000000000000000000000000000000..68bc16d9df769a04436d190d704c0ea8db4b2fc6 GIT binary patch literal 7007 zcmV-l8=&NgP)&oCF}er{ zs34%Ihg|_t4!9z_>jv-vDk}@f0xAd*qF&?`+>pz?^Z#@65@X~oAxi=XL_i3SAc2tA zp1-PRrmCMabEhBEx4v`goZNIzcXf63SO5Rl|6r_5I2F3Nafjhq|-m)L={u&~Gn`YO9=qyVFaIZFI8klZAza1#>uDZK!so%3gL@EG#Ut2Zw()$qB!nb(btGEG!t~ z)dO{MasZg%XR!$jx9rGRIUHtrRJ-r8(EtwTd7e9_!M9nSFlF}U-VKeG8;8|RPrQ+!gwtB= z+wH7~C}G(Vuy#c6ERzO5jD5B;oJC0lRIDyc@5p!&8F?n`A~p)(aQuFYFX?)g7xWCi z&k^vzh$kI~rx{zkY2y7Y!{=M<+k93;l!vBfPc*GJCg7{#54F)@0xvS>6<*Vs0TXzV zr!(u=ggN8bC?Y2&DxYS(u&=L`s~^i9IdMGI5wJ>|2rC(fQv&;6YohXDhr^?u)o?I1 z^+_WqCh(hK{d5GpIeN$mW<sZ~_}u z30JUE<)F~>%X3SVs8S=cwVfv?hMPDX-|?)f*Rq16tH`NbeLoeW z(B97mBC2SWY@@?Ce9hswM*AS1V?EVFSlY1Ulw)%0AFI?dZP#AFJk~SZ8~T${Wf#h1 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 xh;VWWHtt$jSXd+u5~pjbN>H<~u&`k9_