diff --git a/lib/pdf-business-card.tsx b/lib/pdf-business-card.tsx index 51b04de2..6025433e 100644 --- a/lib/pdf-business-card.tsx +++ b/lib/pdf-business-card.tsx @@ -48,12 +48,12 @@ export interface PDFBusinessCardProps { variant?: 'blue' | 'white' | 'black'; isViaprinto?: boolean; withTruck?: boolean; + withCropMarks?: boolean; } // Die Buchstaben K, L, Z im SVG (inklusive dem kleinen Stück vom Z oben links) export const KLZ_PATHS = [25, 26, 27, 28, 29]; -// Mintel Aesthetics Colors - EXACT PROD COLORS const COLORS = { primary: '#011dff', // Brand Royal Blue blue: '#000a66', @@ -66,6 +66,98 @@ const COLORS = { lightGray: '#f8f9fa', }; +const CropMarks = () => ( + + {/* Top Left */} + + + + {/* Top Right */} + + + + {/* Bottom Left */} + + + + {/* Bottom Right */} + + + +); + const styles = StyleSheet.create({ pageBleed: { width: '91mm', @@ -694,6 +786,7 @@ export const PDFBusinessCard: React.FC = ({ variant = 'blue', isViaprinto = false, withTruck = true, + withCropMarks = false, }) => { const isWhiteVariant = variant === 'white' || variant === 'black'; @@ -730,6 +823,26 @@ export const PDFBusinessCard: React.FC = ({ ? path.join(process.cwd(), 'public', 'media', 'cable_drums_truck.png') : path.join(process.cwd(), 'public', 'cable_drums_bg.png'); + const renderPageWrapper = (children: React.ReactNode, bleedStyle: any) => { + if (withCropMarks) { + return ( + + + + + {children} + + + + ); + } + return ( + + {children} + + ); + }; + return ( = ({ creator="KLZ Print Engine" > {/* VORDERSEITE (Blue page with logo, truck and tagline) */} - - {withTruck && ( - - - - )} - - - Von 0,6/1,0 kV bis 64/110 kV - - - - + {withTruck && ( + + - - Niederspannung - - - - - Mittelspannung - - - - - - Hochspannung - - - - - - - Solar - - - - - - {/* Base Logo: text is white, truck is green. Fill KLZ background to hide truck, keep outline white */} - - - {/* Letterpress Mask Layer: We use #ff00fe as a marker color. Only the "KLZ" letters! */} - {isViaprinto && ( - KLZ_PATHS.includes(i))} - style={[styles.frontLogo, { position: 'absolute' }]} - overrideColor="#ff00fe" - solidPaths={KLZ_PATHS.map((_, i) => i)} - /> )} - - + + + Von 0,6/1,0 kV bis 64/110 kV + + + + + + Niederspannung + + + + + + Mittelspannung + + + + + + Hochspannung + + - {/* VORDERSEITE (White page with contact info) */} - + + + + Solar + + + + + + {/* Base Logo: text is white, truck is green. Fill KLZ background to hide truck, keep outline white */} + + + {/* Letterpress Mask Layer: We use #ff00fe as a marker color. Only the "KLZ" letters! */} + {isViaprinto && ( + KLZ_PATHS.includes(i))} + style={[styles.frontLogo, { position: 'absolute' }]} + overrideColor="#ff00fe" + solidPaths={KLZ_PATHS.map((_, i) => i)} + /> + )} + + , + [styles.pageBleed, isWhiteVariant && { backgroundColor: '#ffffff' }], + )} + + {renderPageWrapper( = ({ - - - - KLZ Vertriebs GmbH · Raiffeisenstraße 22 · 73630 Remshalden - - - + + + KLZ Vertriebs GmbH · Raiffeisenstraße 22 · 73630 Remshalden + + + , + styles.pageBleed, + )} ); }; diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf index d2c1c620..85823a50 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_CropMarks.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_CropMarks.pdf new file mode 100644 index 00000000..6de3f7d0 Binary files /dev/null and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_CropMarks.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_NoTruck.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_NoTruck.pdf index 163a4884..bfdb5656 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_NoTruck.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_NoTruck.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Viaprinto_CMYK_91x61mm_3mmBleed.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Viaprinto_CMYK_91x61mm_3mmBleed.pdf index 26cd983d..0d6252b3 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Viaprinto_CMYK_91x61mm_3mmBleed.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Viaprinto_CMYK_91x61mm_3mmBleed.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf index 9ee8f76e..81893d0a 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_CropMarks.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_CropMarks.pdf new file mode 100644 index 00000000..a6aef267 Binary files /dev/null and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_CropMarks.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_NoTruck.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_NoTruck.pdf index 9a8e130c..09b4cf9d 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_NoTruck.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_NoTruck.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Viaprinto_CMYK_91x61mm_3mmBleed.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Viaprinto_CMYK_91x61mm_3mmBleed.pdf index de3837ca..fc368f40 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Viaprinto_CMYK_91x61mm_3mmBleed.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Viaprinto_CMYK_91x61mm_3mmBleed.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf index 998339fc..78739204 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_CropMarks.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_CropMarks.pdf new file mode 100644 index 00000000..688d971f Binary files /dev/null and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_CropMarks.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_NoTruck.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_NoTruck.pdf index 2d0dedcf..a1287b88 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_NoTruck.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_NoTruck.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Viaprinto_CMYK_91x61mm_3mmBleed.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Viaprinto_CMYK_91x61mm_3mmBleed.pdf index 9be7db62..d7ea260d 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Viaprinto_CMYK_91x61mm_3mmBleed.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Viaprinto_CMYK_91x61mm_3mmBleed.pdf differ diff --git a/public/downloads/business-cards/temp_KLZ_Visitenkarte_Johannes_Gleich.pdf b/public/downloads/business-cards/temp_KLZ_Visitenkarte_Johannes_Gleich.pdf index 139fe93b..c407773f 100644 Binary files a/public/downloads/business-cards/temp_KLZ_Visitenkarte_Johannes_Gleich.pdf and b/public/downloads/business-cards/temp_KLZ_Visitenkarte_Johannes_Gleich.pdf differ diff --git a/public/downloads/business-cards/temp_KLZ_Visitenkarte_Klaus_Mintel.pdf b/public/downloads/business-cards/temp_KLZ_Visitenkarte_Klaus_Mintel.pdf index d6f7006d..4061f32b 100644 Binary files a/public/downloads/business-cards/temp_KLZ_Visitenkarte_Klaus_Mintel.pdf and b/public/downloads/business-cards/temp_KLZ_Visitenkarte_Klaus_Mintel.pdf differ diff --git a/public/downloads/business-cards/temp_KLZ_Visitenkarte_Michael_Bodemer.pdf b/public/downloads/business-cards/temp_KLZ_Visitenkarte_Michael_Bodemer.pdf index 4d779a43..341a00f1 100644 Binary files a/public/downloads/business-cards/temp_KLZ_Visitenkarte_Michael_Bodemer.pdf and b/public/downloads/business-cards/temp_KLZ_Visitenkarte_Michael_Bodemer.pdf differ diff --git a/public/downloads/business-cards/test_page_1_crop.png b/public/downloads/business-cards/test_page_1_crop.png new file mode 100644 index 00000000..2a415b20 Binary files /dev/null and b/public/downloads/business-cards/test_page_1_crop.png differ diff --git a/scripts/generate-business-cards.ts b/scripts/generate-business-cards.ts index 9bfa56bc..4aac196d 100644 --- a/scripts/generate-business-cards.ts +++ b/scripts/generate-business-cards.ts @@ -143,7 +143,26 @@ END:VCARD`; const gsNoTruckCommand = `gs -dNoOutputFonts -sDEVICE=pdfwrite -o "${finalNoTruckPath}" "${tempNoTruckPath}"`; execSync(gsNoTruckCommand, { stdio: 'inherit' }); fs.unlinkSync(tempNoTruckPath); - console.log(`✓ No Truck Print File generated: ${noTruckFileName}`); + // 4. CROP MARKS PDF (RGB) + console.log(`- Rendering Crop Marks Variant (RGB)...`); + const cropMarksFileName = `KLZ_Visitenkarte_${safeName}_CropMarks.pdf`; + const tempCropMarksPath = path.join(CONFIG.outputDir, `temp_${cropMarksFileName}`); + const finalCropMarksPath = path.join(CONFIG.outputDir, cropMarksFileName); + + buffer = await renderToBuffer( + React.createElement(PDFBusinessCard, { + person, + qrCodeDataUrl, + variant: 'blue', + isViaprinto: false, + withCropMarks: true, + }), + ); + fs.writeFileSync(tempCropMarksPath, buffer); + const gsCropMarksCommand = `gs -dNoOutputFonts -sDEVICE=pdfwrite -o "${finalCropMarksPath}" "${tempCropMarksPath}"`; + execSync(gsCropMarksCommand, { stdio: 'inherit' }); + fs.unlinkSync(tempCropMarksPath); + console.log(`✓ Crop Marks Print File generated: ${cropMarksFileName}`); } }