@ironsoftware/ironpdf
Version:
IronPDF for Node
88 lines (82 loc) • 1.91 kB
text/typescript
import { z } from "zod"
import {
barcodeTypeSchema,
cssMediaTypeSchema,
horizontalAlignmentSchema,
lengthSchema,
verticalAlignmentSchema
} from "./typeSchema";
import {BarcodeStampOptions, TextStampOptions} from "../../public/stamp";
export const baseStampOptionsSchema = z.object({
horizontalAlignment: horizontalAlignmentSchema,
verticalAlignment: verticalAlignmentSchema,
horizontalOffset: lengthSchema.optional(),
verticalOffset: lengthSchema.optional(),
opacity: z
.number()
.optional(),
rotation: z
.number()
.optional(),
hyperlink: z
.string()
.optional(),
scale: z
.number()
.optional(),
behindExistingContent: z
.boolean()
.optional(),
timeout: z
.number()
.optional(),
renderDelay: z
.number()
.optional(),
maxWidth: lengthSchema.optional(),
maxHeight: lengthSchema.optional(),
minWidth: lengthSchema.optional(),
minHeight: lengthSchema.optional()
})
export const htmlStampOptionsSchema = baseStampOptionsSchema.extend({
cssMediaType: cssMediaTypeSchema.optional()
})
export const imageStampOptionsSchema = baseStampOptionsSchema
export const barcodeStampOptionsSchema: z.ZodType<BarcodeStampOptions> = baseStampOptionsSchema.extend({
widthPx: z
.number()
.optional(),
heightPx: z
.number()
.optional(),
barcodeType: barcodeTypeSchema.optional()
})
export const textStampOptionsSchema: z.ZodType<TextStampOptions> = baseStampOptionsSchema.extend({
isBold: z
.boolean()
.optional(),
isItalic: z
.boolean()
.optional(),
isUnderline: z
.boolean()
.optional(),
isStrikethrough: z
.boolean()
.optional(),
fontFamily: z
.string()
.optional(),
fontSize: z
.number()
.optional(),
useGoogleFont: z
.boolean()
.optional(),
textColor: z
.string()
.optional(),
backgroundColor: z
.string()
.optional()
})