/** * Form - PDF form/AcroForm handling * * This module provides 100% API compatibility with MicroPDF's form operations. * Supports text fields, checkboxes, radio buttons, combo boxes, and signatures. */ import { Rect, type RectLike } from './geometry.js'; /** * PDF form field types */ export declare enum FieldType { Unknown = 0, PushButton = 1, CheckBox = 2, Checkbox = 2, RadioButton = 3, Radio = 3, Text = 4, Choice = 5, ComboBox = 5, Signature = 6, ListBox = 7 } /** * Field alignment values */ export declare enum FieldAlignment { Left = 0, Center = 1, Right = 2 } /** * Text format types for form fields */ export declare enum TextFormat { Normal = 0, Number = 1, Percent = 2, Date = 3, Time = 4, Special = 5 } /** * Field flags (bit flags) */ export declare enum FieldFlags { ReadOnly = 1, Required = 2, NoExport = 4, Multiline = 4096, Password = 8192, NoToggleToOff = 16384, Radio = 32768, Pushbutton = 65536, Combo = 131072, Edit = 262144, Sort = 524288, FileSelect = 1048576, MultiSelect = 2097152, DoNotSpellCheck = 4194304, DoNotScroll = 8388608, Comb = 16777216, RadiosInUnison = 33554432, CommitOnSelChange = 67108864 } /** * Choice option for combo box or list box */ export interface ChoiceOption { label: string; value: string; } /** * A form field (widget annotation) */ export declare class FormField { protected _name: string; protected _type: FieldType; protected _value: string; protected _defaultValue: string; protected _rect: Rect; protected _flags: number; protected _maxLen: number; protected _choices: ChoiceOption[]; protected _selectedIndex: number; protected _borderWidth: number; protected _borderColor: number[]; protected _bgColor: number[]; protected _fontSize: number; protected _alignment: FieldAlignment; protected _refCount: number; protected _valid: boolean; constructor(name: string, type: FieldType, rect: RectLike); keep(): this; drop(): void; /** * Clone this field */ clone(): FormField; /** * Copy all properties from this field to another */ protected _copyTo(target: FormField): void; get name(): string; get type(): FieldType; get rect(): Rect; set rect(r: RectLike); get value(): string; set value(val: string); get defaultValue(): string; set defaultValue(val: string); get flags(): number; set flags(f: number); hasFlag(flag: FieldFlags): boolean; setFlag(flag: FieldFlags, value: boolean): void; isReadOnly(): boolean; setReadOnly(value: boolean): void; isRequired(): boolean; setRequired(value: boolean): void; isMultiline(): boolean; setMultiline(value: boolean): void; isPassword(): boolean; setPassword(value: boolean): void; get maxLength(): number; set maxLength(len: number); get textFormat(): string; isChecked(): boolean; setChecked(checked: boolean): void; isCombo(): boolean; isEdit(): boolean; isMultiSelect(): boolean; isMultiselect(): boolean; get choiceCount(): number; getChoiceLabel(index: number): string; getChoiceValue(index: number): string; addChoice(label: string, value?: string): void; removeChoice(index: number): void; get selectedIndex(): number; set selectedIndex(index: number); clearSelection(): void; isSigned(): boolean; get borderWidth(): number; set borderWidth(width: number); get borderColor(): number[]; set borderColor(color: number[]); get backgroundColor(): number[]; set backgroundColor(color: number[]); get fontSize(): number; set fontSize(size: number); get alignment(): FieldAlignment; set alignment(align: FieldAlignment); getName(): string; getValue(): string; setValue(val: string): void; getRect(): Rect; getFlags(): number; setFlags(f: number): void; getMaxLen(): number; setMaxLen(len: number): void; getTextFormat(): TextFormat; getBorderWidth(): number; setBorderWidth(w: number): void; getBorderColor(): number[]; setBorderColor(c: number[]): void; getBackgroundColor(): number[]; setBackgroundColor(c: number[]): void; getFontSize(): number; setFontSize(s: number): void; getAlignment(): FieldAlignment; setAlignment(a: FieldAlignment): void; setDefaultValue(val: string): void; getChoiceCount(): number; getSelectedIndex(): number; setSelectedIndex(i: number): void; isValid(): boolean; validate(): boolean; } /** * A text form field */ export declare class TextField extends FormField { constructor(_page: unknown, fieldIndex: number, _pageIndex: number); clone(): TextField; } /** * A checkbox form field */ export declare class CheckboxField extends FormField { constructor(_page: unknown, fieldIndex: number, _pageIndex: number); clone(): CheckboxField; } /** * A push button form field */ export declare class PushButtonField extends FormField { constructor(_page: unknown, fieldIndex: number, _pageIndex: number); clone(): PushButtonField; } /** * A combo box form field */ export declare class ComboBoxField extends FormField { constructor(_page: unknown, fieldIndex: number, _pageIndex: number); clone(): ComboBoxField; } /** * A signature form field */ export declare class SignatureField extends FormField { constructor(_page: unknown, fieldIndex: number, _pageIndex: number); clone(): SignatureField; } /** * PDF interactive form (AcroForm) */ export declare class Form { private _fields; private _fieldMap; private _refCount; constructor(); /** * Create a form from a PDF document */ static create(): Form; keep(): this; drop(): void; /** * Create a text field */ createTextField(name: string, rect: RectLike): FormField; /** * Create a checkbox */ createCheckBox(name: string, rect: RectLike): FormField; /** * Create a push button */ createPushButton(name: string, rect: RectLike): FormField; /** * Create a combo box */ createComboBox(name: string, rect: RectLike): FormField; /** * Create a signature field */ createSignatureField(name: string, rect: RectLike): FormField; /** * Add a field to the form */ private addField; /** * Get field count */ get fieldCount(): number; /** * Look up a field by name */ lookupField(name: string): FormField | undefined; /** * Get field by index */ getField(index: number): FormField | undefined; /** * Get first widget (field) */ firstWidget(): FormField | undefined; /** * Get next widget after a given field */ nextWidget(current: FormField): FormField | undefined; /** * Delete a field */ deleteField(nameOrField: string | FormField): boolean; /** * Reset all fields to their default values */ reset(): void; /** * Validate all fields */ validate(): boolean; /** * Get all fields */ getAllFields(): FormField[]; /** * Iterate over all fields */ [Symbol.iterator](): Generator; } //# sourceMappingURL=form.d.ts.map