import { type PdfEmbeddedFontInput, type PdfFontInput } from "./font-embedding.js"; import type { PdfEncryptionConfig } from "./encryption/types.js"; import type { PdfVersion } from "./phase9-types.js"; import type { PdfSignOptions } from "./phase10-types.js"; import type { PdfBinarySource, PdfColor, PdfGraphic } from "./phase4-types.js"; export interface PdfRenderMeta { author?: string; creationDate?: Date | string; creator?: string; keywords?: string[]; modificationDate?: Date | string; producer?: string; subject?: string; title?: string; } export type PdfTransformMatrix = [number, number, number, number, number, number]; export interface PdfRenderableText { accessibility?: PdfMarkedContentSpec; direction?: "auto" | "ltr" | "rtl"; font?: PdfFontInput; fallbackFonts?: PdfEmbeddedFontInput[]; fontSize: number; spaceCount?: number; transform?: PdfTransformMatrix; value: string; width?: number; wordSpacing?: number; x: number; y: number; } export type PdfRenderableGraphic = PdfGraphic & { accessibility?: PdfMarkedContentSpec; layer?: "background" | "foreground"; transform?: PdfTransformMatrix; }; export interface PdfMarkedContentSpec { actualText?: string; alt?: string; artifact?: boolean; headers?: string[]; lang?: string; role: string; scope?: "Column" | "Row"; structureId?: string; } export interface PdfAccessibilityStructureSpec { alt?: string; headers?: string[]; id: string; lang?: string; parentId?: string | null; role: string; scope?: "Column" | "Row"; } export interface PdfDocumentAccessibilitySpec { lang?: string; structure: PdfAccessibilityStructureSpec[]; } export type PdfPageExtraCommand = string | { accessibility?: PdfMarkedContentSpec; command: string; }; export interface PdfRenderedPage { annotations?: PdfPageAnnotationSpec[]; extraCommands?: PdfPageExtraCommand[]; graphics?: PdfRenderableGraphic[]; height: number; texts: PdfRenderableText[]; width: number; } export interface PdfDestinationSpec { left: number; pageIndex: number; top: number; zoom?: number | null; } export interface PdfPageLabelSpec { prefix?: string; startNumber?: number; startPage: number; style: "arabic" | "roman-lower" | "roman-upper"; } export interface PdfExternalLinkAnnotationSpec { kind: "link-external"; rect: [number, number, number, number]; url: string; } export interface PdfInternalLinkAnnotationSpec { destination: PdfDestinationSpec; kind: "link-internal"; rect: [number, number, number, number]; } export interface PdfTextAnnotationSpec { contents: string; kind: "note"; open?: boolean; rect: [number, number, number, number]; title?: string; } export interface PdfHighlightAnnotationSpec { color?: PdfColor; contents?: string; kind: "highlight"; quadPoints: [number, number, number, number, number, number, number, number]; rect: [number, number, number, number]; } export interface PdfTextFieldWidgetSpec { calculationScript?: string; fontColor?: string; fontSize?: number; kind: "form-text"; label?: string; maxLength?: number; multiline?: boolean; name: string; readOnly?: boolean; required?: boolean; rect: [number, number, number, number]; tabOrder?: number; tooltip?: string; value?: string; } export interface PdfCheckboxWidgetSpec { calculationScript?: string; checked?: boolean; fontColor?: string; kind: "form-checkbox"; label?: string; name: string; readOnly?: boolean; required?: boolean; rect: [number, number, number, number]; tabOrder?: number; tooltip?: string; } export interface PdfDropdownWidgetSpec { calculationScript?: string; fontColor?: string; kind: "form-dropdown"; label?: string; name: string; readOnly?: boolean; required?: boolean; options: string[]; rect: [number, number, number, number]; tabOrder?: number; tooltip?: string; value?: string; } export interface PdfRadioWidgetSpec { calculationScript?: string; checked?: boolean; fontColor?: string; group: string; kind: "form-radio"; label?: string; name: string; readOnly?: boolean; required?: boolean; rect: [number, number, number, number]; tabOrder?: number; tooltip?: string; value: string; } export interface PdfSignatureWidgetSpec { fieldName: string; fontColor?: string; fontSize?: number; kind: "form-signature"; label?: string; mode: "digital" | "visual"; rect: [number, number, number, number]; tabOrder?: number; tooltip?: string; value?: string; } export type PdfWidgetAnnotationSpec = PdfCheckboxWidgetSpec | PdfDropdownWidgetSpec | PdfRadioWidgetSpec | PdfSignatureWidgetSpec | PdfTextFieldWidgetSpec; export type PdfPageAnnotationSpec = PdfCheckboxWidgetSpec | PdfDropdownWidgetSpec | PdfExternalLinkAnnotationSpec | PdfHighlightAnnotationSpec | PdfInternalLinkAnnotationSpec | PdfTextAnnotationSpec | PdfRadioWidgetSpec | PdfSignatureWidgetSpec | PdfTextFieldWidgetSpec; export interface PdfOutlineItemSpec { children?: PdfOutlineItemSpec[]; destination: PdfDestinationSpec; title: string; } export interface PdfDocumentInteractiveSpec { accessibility?: PdfDocumentAccessibilitySpec; sharedForms?: PdfSharedFormSpec[]; metadataXml?: string; outlines?: PdfOutlineItemSpec[]; pageLabels?: PdfPageLabelSpec[]; pdfa?: PdfRenderPdfaSpec; } export interface PdfRenderPdfaSpec { conformance: "1b" | "2a" | "2b"; defaultFont?: PdfEmbeddedFontInput; defaultFontKey?: string; iccProfile: PdfBinarySource; outputConditionIdentifier: string; } export interface PdfTextEncodingWarning { /** The character that fell outside WinAnsiEncoding. */ char: string; /** Unicode code point of the offending character. */ codePoint: number; /** Suggested ASCII substitution that renders correctly with the standard-14 fonts. */ suggestion: string; /** First 80 characters of the text run that triggered the warning. */ textPreview: string; /** Zero-based page index where the warning was emitted. */ pageIndex: number; /** PDF tagged-structure element id, when available (e.g. headings, list items). */ elementId?: string; } export interface PdfRenderRuntimeOptions { assetPolicy?: import("./phase9-types.js").PdfAssetPolicy; onPageSerialized?: (pageIndex: number, totalPages: number) => void; /** * Invoked once per character that cannot be encoded with the standard-14 * WinAnsi fonts. Lets callers surface actionable warnings instead of silently * emitting `?` glyphs (the failure flagged in * `docs/0428-claude-test-based-directive2.md` ยง"@paperjsx/json-to-pdf" item 4). * If you embed a custom font that covers the character, no warning fires. */ onTextEncodingWarning?: (warning: PdfTextEncodingWarning) => void; } export interface PdfSharedFormSpec { alias: string; bbox: [number, number, number, number]; commands: string; fontResourceKey?: string; } export declare function assertExplicitWordSpacingOperators(command: string): void; export declare function renderPdfPages(options: { deterministic?: boolean; encryption?: PdfEncryptionConfig; flattenForms?: boolean; interactive?: PdfDocumentInteractiveSpec; meta?: PdfRenderMeta; pages: PdfRenderedPage[]; /** User-requested PDF version. Engine may auto-bump but never auto-downgrade. */ pdfVersion?: PdfVersion; runtimeOptions?: PdfRenderRuntimeOptions; signature?: PdfSignOptions; }): Promise; //# sourceMappingURL=pdf-renderer.d.ts.map