UNPKG

pdf-tailwind-forms

Version:

TypeScript Node.js library for generating PDFs with AcroForms and TailwindCSS support

123 lines 3.41 kB
import { PDFOptions } from "puppeteer"; export interface PDFGeneratorOptions { tailwindCDN?: string; puppeteerOptions?: any; defaultFontSize?: number; defaultBorderWidth?: number; } export interface Position { x: number; y: number; width: number; height: number; pdfY?: number; } export interface BaseField { name: string; type: "text" | "checkbox" | "radio" | "dropdown" | "button" | "signature"; selector?: string; position?: Position; pageIndex?: number; offsetX?: number; offsetY?: number; width?: number; height?: number; borderWidth?: number; backgroundColor?: [number, number, number]; borderColor?: [number, number, number]; fontSize?: number; fontColor?: [number, number, number]; required?: boolean; } export interface TextField extends BaseField { type: "text"; defaultValue?: string; multiline?: boolean; maxLength?: number; password?: boolean; alignment?: "left" | "center" | "right"; } export interface CheckboxField extends BaseField { type: "checkbox"; defaultValue?: boolean; size?: number; } export interface RadioOption { value: string; label?: string; } export interface RadioField extends BaseField { type: "radio"; options: RadioOption[]; defaultValue?: string; spacing?: number; size?: number; } export interface DropdownField extends BaseField { type: "dropdown"; options: string[]; defaultValue?: string; editable?: boolean; } export interface ButtonField extends BaseField { type: "button"; label: string; action?: "submit" | "reset" | "javascript"; javascript?: string; } export interface SignatureField extends BaseField { type: "signature"; } export type FormField = TextField | CheckboxField | RadioField | DropdownField | ButtonField | SignatureField; export interface GenerateConfig { content: string; customCSS?: string; fields?: FormField[]; outputPath?: string; pdfOptions?: PDFOptions; metadata?: PDFMetadata; } export interface PDFMetadata { title?: string; author?: string; subject?: string; keywords?: string[]; creator?: string; producer?: string; creationDate?: Date; modificationDate?: Date; } export interface FillData { [fieldName: string]: string | boolean | number; } export interface GenerationResult { bytes: Uint8Array; path?: string; fieldCount: number; pageCount: number; } export declare class PDFGenerator { private browser; private options; constructor(options?: PDFGeneratorOptions); private init; destroy(): Promise<void>; private generateHTML; private calculateElementPosition; private addTextField; private addCheckboxField; private addRadioField; private addDropdownField; private addButtonField; private addSignatureField; private createFieldOptions; private normalizeRGB; private setMetadata; generate(config: GenerateConfig): Promise<GenerationResult>; generateBatch(configs: GenerateConfig[]): Promise<GenerationResult[]>; fillExistingPDF(pdfPath: string, data: FillData, outputPath?: string): Promise<Uint8Array>; extractFormData(pdfPath: string): Promise<FillData>; validateConfig(config: GenerateConfig): string[]; } export default PDFGenerator; //# sourceMappingURL=pdf-generator.d.ts.map