97 lines
2.0 KiB
TypeScript
97 lines
2.0 KiB
TypeScript
// User-configurable settings for PDF generation
|
|
|
|
export interface PageSettings {
|
|
pageWidth: number; // mm
|
|
pageHeight: number; // mm
|
|
margin: number; // mm
|
|
}
|
|
|
|
export interface CardDimensions {
|
|
width: number; // mm
|
|
height: number; // mm
|
|
}
|
|
|
|
// A4 Page dimensions in millimeters
|
|
export const PAGE_SETTINGS: PageSettings = {
|
|
pageWidth: 210,
|
|
pageHeight: 297,
|
|
margin: 10
|
|
};
|
|
|
|
// Dimensions for a single card in the text PDF.
|
|
// These dimensions will be used to calculate how many cards can fit on a page.
|
|
export const TEXT_CARD_DIMENSIONS: CardDimensions = {
|
|
width: 63,
|
|
height: 40
|
|
};
|
|
|
|
// Dimensions for a single card in the photo PDF.
|
|
export const PHOTO_CARD_DIMENSIONS: CardDimensions = {
|
|
width: 25,
|
|
height: 35
|
|
};
|
|
|
|
// Photo dimensions within the photo card
|
|
export const PHOTO_DIMENSIONS = {
|
|
width: 20, // mm
|
|
height: 35 // mm
|
|
};
|
|
|
|
export interface TextPosition {
|
|
x: number; // mm, relative to cell top-left
|
|
y: number; // mm, relative to cell top-left
|
|
size: number; // font size in points
|
|
}
|
|
|
|
export interface PhotoPosition {
|
|
x: number; // mm, relative to cell top-left
|
|
y: number; // mm, relative to cell top-left
|
|
width: number; // mm
|
|
height: number; // mm
|
|
}
|
|
|
|
export interface TextFieldLayout {
|
|
name: TextPosition;
|
|
nationality: TextPosition;
|
|
birthday: TextPosition;
|
|
}
|
|
|
|
export interface PhotoFieldLayout {
|
|
photo: PhotoPosition;
|
|
name: TextPosition;
|
|
}
|
|
|
|
// Text PDF Field Positions (in mm, relative to cell top-left)
|
|
export const TEXT_FIELD_LAYOUT: TextFieldLayout = {
|
|
name: {
|
|
x: 2,
|
|
y: 5,
|
|
size: 10 // font size in points
|
|
},
|
|
nationality: {
|
|
x: 2,
|
|
y: 10,
|
|
size: 10
|
|
},
|
|
birthday: {
|
|
x: 2,
|
|
y: 15,
|
|
size: 10
|
|
}
|
|
};
|
|
|
|
// Photo PDF Field Positions (in mm, relative to cell top-left)
|
|
export const PHOTO_FIELD_LAYOUT: PhotoFieldLayout = {
|
|
photo: {
|
|
x: 2, // 2mm from left of cell
|
|
y: 2, // 2mm from top of cell
|
|
width: PHOTO_DIMENSIONS.width,
|
|
height: PHOTO_DIMENSIONS.height
|
|
},
|
|
name: {
|
|
x: 2, // 2mm from left of cell
|
|
y: PHOTO_DIMENSIONS.height + 0, // Below the photo + 5mm gap
|
|
size: 5 // font size in points
|
|
}
|
|
};
|