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}`);
}
}