import * as i0 from '@angular/core'; import { OnInit, OnDestroy, OnChanges, AfterViewInit, ElementRef, EventEmitter, TemplateRef, ChangeDetectorRef, ApplicationRef, NgZone, SimpleChanges, ModuleWithProviders } from '@angular/core'; import { PdfAiPanelConfig, PdfAiPanelMessage } from 'ng2-pdfjs-viewer/ai'; export { PdfAiAssistant, PdfAiAssistantConfig, PdfAiMessage, PdfAiPanelConfig, PdfAiPanelMessage, PdfPageText } from 'ng2-pdfjs-viewer/ai'; import * as i2 from '@angular/common'; interface ActionExecutionResult { actionId: string; success: boolean; error?: string; timestamp: number; data?: any; } type AnnotationEditorMode = "disable" | "none" | "freetext" | "highlight" | "stamp" | "ink" | "signature" | "comment"; interface AnnotationEditorState { isEditing: boolean; isEmpty: boolean; hasSomethingToUndo: boolean; hasSomethingToRedo: boolean; hasSelectedEditor: boolean; } interface AnnotationEditorModeChange { mode: AnnotationEditorMode; } interface SearchOptions { caseSensitive?: boolean; entireWord?: boolean; highlightAll?: boolean; matchDiacritics?: boolean; } type FormDataMap = Record; interface WatermarkConfig { text: string; color?: string; opacity?: number; fontSize?: string; rotation?: number; } interface ContentProtectionConfig { blockPrint?: boolean; blockDownload?: boolean; disableTextSelection?: boolean; watermark?: WatermarkConfig | null; } interface PagesEditedEvent { operation: string; pagesCount: number; } interface ReadAloudState { status: "reading" | "paused" | "stopped" | "finished" | "error"; page: number; sentence?: string; } interface DocumentPageText { page: number; text: string; } type SidebarViewName = "none" | "thumbs" | "outline" | "attachments" | "layers" | "unknown"; interface SidebarViewChange { view: SidebarViewName; } interface LayersChange { reason: "loaded" | "changed"; layersCount?: number; } interface NamedActionEvent { action: string; } interface PdfSignatureStorage { loadAll(): Promise>; save(uuid: string, data: unknown): Promise; delete(uuid: string): Promise; } interface SearchResult { total: number; current: { page: number; matchIndex: number; } | null; matchesPerPage: number[]; pagesWithMatches: number[]; } type ChangedPage = number; type ChangedScale = number; interface ChangedRotation { rotation: number; page: number; } interface ControlVisibilityConfig { openFile?: boolean; download?: boolean; print?: boolean; fullScreen?: boolean; find?: boolean; viewBookmark?: boolean; annotations?: boolean; } interface GroupVisibilityConfig { toolbarLeft?: boolean; toolbarMiddle?: boolean; toolbarRight?: boolean; secondaryToolbarToggle?: boolean; sidebar?: boolean; sidebarLeft?: boolean; sidebarRight?: boolean; } type ToolbarDensity = "default" | "compact" | "comfortable"; type ToolbarPosition = "top" | "bottom"; type SidebarPosition = "left" | "right"; type ExternalLinkTarget = "none" | "self" | "blank" | "parent" | "top"; interface LayoutConfig { toolbarDensity?: ToolbarDensity; sidebarWidth?: string; toolbarPosition?: ToolbarPosition; sidebarPosition?: SidebarPosition; responsiveBreakpoint?: string | number; } interface AutoActionConfig { downloadOnLoad?: boolean; printOnLoad?: boolean; showLastPageOnLoad?: boolean; rotateCW?: boolean; rotateCCW?: boolean; } interface ErrorConfig { message?: string; override?: boolean; append?: boolean; } interface ViewerConfig { showSpinner?: boolean; useOnlyCssZoom?: boolean; diagnosticLogs?: boolean; locale?: string; externalLinkTarget?: ExternalLinkTarget; rememberLastView?: boolean; } interface ThemeConfig { theme?: "light" | "dark" | "auto"; primaryColor?: string; backgroundColor?: string; pageBorderColor?: string; pageSpacing?: { margin?: string; spreadMargin?: string; border?: string; }; toolbarColor?: string; textColor?: string; borderRadius?: string; customCSS?: string; cspNonce?: string; iframeTitle?: string; } interface DocumentError { message: string; source?: any; name?: string; } interface PagesInfo { pagesCount: number; } interface PresentationMode { active: boolean; switchInProgress?: boolean; } interface FindOperation { query: string; phraseSearch: boolean; caseSensitive: boolean; entireWord?: boolean; highlightAll?: boolean; findPrevious?: boolean; } interface FindMatchesCount { current: number; total: number; } interface DocumentMetadata { title?: string; author?: string; subject?: string; keywords?: string; creator?: string; producer?: string; creationDate?: string; modificationDate?: string; pdfFormatVersion?: string; isLinearized?: boolean; isAcroFormPresent?: boolean; isXFAPresent?: boolean; isCollectionPresent?: boolean; } interface DocumentOutline { items?: any[]; hasOutline: boolean; } interface PageRenderInfo { pageNumber: number; source?: string; timestamp?: number; } interface AnnotationLayerRenderEvent { pageNumber: number; error?: Error; timestamp: number; } interface BookmarkClick { title: string; dest: string | null; action?: string; url?: string; pageNumber?: number; isCurrentItem: boolean; } declare class PdfJsViewerComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit { iframe: ElementRef; static lastID: number; viewerId: string; onBeforePrint: EventEmitter; onAfterPrint: EventEmitter; onDocumentLoad: EventEmitter; onPageChange: EventEmitter; onScaleChange: EventEmitter; onRotationChange: EventEmitter; onDocumentError: EventEmitter; onDocumentInit: EventEmitter; onPagesInit: EventEmitter; onPresentationModeChanged: EventEmitter; onOpenFile: EventEmitter; onFind: EventEmitter; onUpdateFindMatchesCount: EventEmitter; onMetadataLoaded: EventEmitter; onOutlineLoaded: EventEmitter; onPageRendered: EventEmitter; onAnnotationLayerRendered: EventEmitter; onBookmarkClick: EventEmitter; onIdle: EventEmitter; onPasswordPrompt: EventEmitter; onAnnotationEditorStateChange: EventEmitter; onPagesEdited: EventEmitter; onReadAloudStateChange: EventEmitter; onSidebarViewChanged: EventEmitter; onLayersChanged: EventEmitter; onNamedAction: EventEmitter; onDocumentProperties: EventEmitter; viewerFolder: string; externalWindow: boolean; target: string; showSpinner: boolean; downloadFileName: string; locale: string; useOnlyCssZoom: boolean; externalLinkTarget: ExternalLinkTarget; rememberLastView: boolean; set annotationEditor(mode: AnnotationEditorMode); get annotationEditor(): AnnotationEditorMode; private _annotationEditor; annotationEditorChange: EventEmitter; highlightEditorColors?: string; enableSignatureEditor: boolean; signatureStorage?: PdfSignatureStorage; pageColors?: { background: string; foreground: string; } | null; pdfJsOptions?: Record; enableCommentEditor: boolean; enablePageEditing: boolean; showToolbar: boolean; customToolbarTpl?: TemplateRef; customSidebarTpl?: TemplateRef; aiAssistantConfig?: PdfAiPanelConfig | null; aiPanelOpen: boolean; aiBusy: boolean; aiMessages: PdfAiPanelMessage[]; private aiClient?; private aiClientConfig?; private aiDocText?; private aiGeneration; private aiAbort?; private invalidateAiState; private _pageOverlayTpl?; set pageOverlayTpl(value: TemplateRef | undefined); get pageOverlayTpl(): TemplateRef | undefined; httpHeaders?: Record; withCredentials: boolean; onProgress: EventEmitter<{ loaded: number; total: number; }>; private authLoadToken; set formData(value: FormDataMap); get formData(): FormDataMap; private _formData; formDataChange: EventEmitter; set contentProtection(config: ContentProtectionConfig); get contentProtection(): ContentProtectionConfig; private _contentProtection; set iframeSandbox(value: string); get iframeSandbox(): string; private _extraSandboxTokens; get effectiveSandbox(): string; set diagnosticLogs(value: boolean); get diagnosticLogs(): boolean; private _diagnosticLogs; showOpenFile: boolean; showAnnotations: boolean; showDownload: boolean; showViewBookmark: boolean; showPrint: boolean; showFullScreen: boolean; showFind: boolean; downloadOnLoad: boolean; printOnLoad: boolean; rotateCW: boolean; rotateCCW: boolean; showLastPageOnLoad: boolean; namedDest: string; errorOverride: boolean; errorAppend: boolean; errorMessage: string; urlValidation: boolean; customSecurityTpl: TemplateRef; securityWarning: { message: string; originalUrl: string; currentUrl: string; } | null; theme: "light" | "dark" | "auto"; primaryColor?: string; backgroundColor?: string; pageBorderColor?: string; pageSpacing?: { margin?: string; spreadMargin?: string; border?: string; }; toolbarColor?: string; textColor?: string; borderRadius?: string; customCSS?: string; cspNonce?: string; iframeTitle?: string; customSpinnerTpl?: TemplateRef; spinnerClass?: string; customErrorTpl?: TemplateRef; errorClass?: string; showToolbarLeft: boolean; showToolbarMiddle: boolean; showToolbarRight: boolean; showSecondaryToolbarToggle: boolean; showSidebar: boolean; showSidebarLeft: boolean; showSidebarRight: boolean; toolbarDensity: ToolbarDensity; sidebarWidth?: string; toolbarPosition: ToolbarPosition; sidebarPosition: SidebarPosition; responsiveBreakpoint?: string | number; isLoading: boolean; hasError: boolean; currentErrorMessage: string; errorTemplateData: any; getErrorTemplateData(): any; private updateErrorTemplateData; getIframeClasses(): string; reloadViewer(): void; goBack(): void; closeViewer(): void; set controlVisibility(config: ControlVisibilityConfig); set autoActions(config: AutoActionConfig); set errorHandling(config: ErrorConfig); set viewerConfig(config: ViewerConfig); set themeConfig(config: ThemeConfig); set groupVisibility(config: GroupVisibilityConfig); set layoutConfig(config: LayoutConfig); private static warnedDeprecations; private setDeprecatedProperty; /** @deprecated Use `downloadOnLoad` instead. This property will be removed in a future version. */ set startDownload(value: boolean); /** @deprecated Use `printOnLoad` instead. This property will be removed in a future version. */ set startPrint(value: boolean); /** @deprecated Use `showOpenFile` instead. This property will be removed in a future version. */ set openFile(value: boolean); /** @deprecated Use `showDownload` instead. This property will be removed in a future version. */ set download(value: boolean); /** @deprecated Use `showPrint` instead. This property will be removed in a future version. */ set print(value: boolean); /** @deprecated Use `showFullScreen` instead. This property will be removed in a future version. */ set fullScreen(value: boolean); /** @deprecated Use `showFind` instead. This property will be removed in a future version. */ set find(value: boolean); /** @deprecated Use `showViewBookmark` instead. This property will be removed in a future version. */ set viewBookmark(value: boolean); /** @deprecated Use `showLastPageOnLoad` instead. This property will be removed in a future version. */ set lastPage(value: boolean); externalWindowOptions: string; viewerTab: any; iframeBorder: string | number; private _src; private _page; private isPostMessageReady; private postMessageReadiness; private initialConfigQueued; private actionQueueManager; private cdr; private appRef?; private ngZone?; constructor(cdr: ChangeDetectorRef, appRef?: ApplicationRef, ngZone?: NgZone); private messageIdCounter; private actionIdCounter; private pendingMessages; private pendingChanges; private releaseUrl?; private webviewerLoadedHandler?; private pdfEventHandlers?; private _zoom; private _rotation; private _cursor; private _scroll; private _spread; private _pageMode; zoomChange: EventEmitter; cursorChange: EventEmitter; scrollChange: EventEmitter; spreadChange: EventEmitter; pageModeChange: EventEmitter; /** * Two-way binding for zoom level * Supports: auto, page-fit, page-width, page-actual, percentage values (e.g., "150%") */ get zoom(): string; set zoom(value: string); /** * One-way binding for document rotation * Supports: 0, 90, 180, 270 degrees */ set rotation(value: number); get rotation(): number; /** * Two-way binding for cursor mode * Supports: select, hand, zoom */ get cursor(): string; set cursor(value: string); /** * Two-way binding for scroll mode * Supports: vertical, horizontal, wrapped, page */ get scroll(): string; set scroll(value: string); /** * Two-way binding for spread mode * Supports: none, odd, even */ get spread(): string; set spread(value: string); /** * Two-way binding for page mode (sidebar state) * Supports: none, thumbs, bookmarks, attachments */ get pageMode(): string; set pageMode(value: string); set page(_page: number); get page(): number; set pdfSrc(_src: string | Blob | Uint8Array); get pdfSrc(): string | Blob | Uint8Array; get PDFViewerApplicationOptions(): any; get PDFViewerApplication(): any; private get isBrowser(); ngOnInit(): void; ngAfterViewInit(): void; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; private generateMessageId; private sendControlMessage; private sendControlMessageWithRequeue; private isIframeAccessible; private processPostMessageReadyActions; private handleControlResponse; private messageHandler; private handleHostRequest; private setupMessageListener; private rejectPendingMessages; private handleStateChangeNotification; private composeErrorMessage; private handleEventNotification; private applyChanges; private dispatchRegisteredProperty; private applyPendingChanges; /** * Waits for the PDF.js viewer to be ready, and binds the the event bus. */ private bindToPdfJsEventBus; private teardownPdfJsEventBindings; private queueAllConfigurations; private queueAutoActionsForDocumentLoad; refresh(): void; sendViewerControlMessage(action: string, payload: any): Promise; triggerDownload(): Promise; triggerPrint(): Promise; setPage(page: number): Promise; setZoom(zoom: string): Promise; goToLastPage(): Promise; setCursor(cursor: string): Promise; setScroll(scroll: string): Promise; setSpread(spread: string): Promise; triggerRotation(direction: "cw" | "ccw"): Promise; goToPage(page: number): Promise; /** * Serialized state of every annotation created or modified in the editor. * Send this to a server to persist user annotations. */ getAnnotations(): Promise; /** * Restore annotations previously exported with getAnnotations() back into * the editor. Each annotation is rebuilt on its own page; annotations for * pages that haven't rendered yet apply automatically as those pages * render (counted in `pending`). Items with an invalid pageIndex for the * current document are skipped (counted in `rejected`). Calling this twice * with the same payload creates duplicates - restore is additive. Note: * stamp images cannot round-trip (their bitmaps are not serializable). */ setAnnotations(annotations: any[]): Promise<{ restored: number; pending: number; rejected: number; }>; /** * The current document - including annotation edits and filled form * fields - as a Blob, ready for upload or download. */ getDocumentAsBlob(): Promise; /** * Programmatic full-text search. Resolves with totals, per-page match * counts and the pages containing matches; matches are highlighted in the * viewer (highlightAll defaults to true). */ search(query: string, options?: SearchOptions): Promise; /** Move the search selection to the next match. */ searchNext(): Promise; /** Move the search selection to the previous match. */ searchPrevious(): Promise; /** Clear search highlights and forget the active query. */ clearSearch(): Promise; private overlayViews; private mountPageOverlay; private destroyPageOverlays; private mountOverlaysOnRenderedPages; /** * Plain text of the document (or a 1-based page range), extracted from the * PDF.js text layer. The raw material for BYO-AI chat/summarize flows. */ getDocumentText(from?: number, to?: number): Promise; /** * Read the document aloud from the current (or given) page using the * browser's speech synthesis. Progress arrives on onReadAloudStateChange. */ startReadAloud(options?: { fromPage?: number; rate?: number; }): Promise; pauseReadAloud(): Promise; resumeReadAloud(): Promise; stopReadAloud(): Promise; /** * Ask the built-in AI panel a question programmatically (same path the * panel's input uses). Requires [aiAssistantConfig]. Document text is * extracted once per document and reused across questions. */ aiAsk(question: string): Promise; private parseAiCitations; /** * Current AcroForm field values (field name -> value), reflecting any * user edits. Returns {} for documents without form fields. */ getFormData(): Promise; /** Set a single form field by name. */ setFormField(name: string, value: string | boolean | null): Promise; getActionStatus(actionId: string): "pending" | "executing" | "completed" | "failed" | "not-found"; getQueueStatus(): { queuedActions: number; executedActions: number; }; clearActionQueue(): void; /** * Enable or disable URL validation security feature * When enabled, prevents users from modifying the file parameter in the viewer URL * @param enabled - Whether to enable URL validation (default: true) * @returns Promise */ setUrlValidation(enabled?: boolean): Promise; /** * Dismiss the security warning */ dismissSecurityWarning(): void; private loadPdf; private fetchPdfWithAuth; private setupExternalWindow; private renderLoadingSpinner; private createFileUrl; private buildViewerUrl; private collectInitTimeOptions; private navigateToViewer; private externalWindowWarned; private documentLoadFailed; private dispatchAction; private getRequiredReadinessLevel; private hasRequiredReadiness; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class PdfJsViewerModule { /** @deprecated Import PdfJsViewerModule directly; forRoot() registers no providers. */ static forRoot(): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { PdfJsViewerComponent, PdfJsViewerModule }; export type { ActionExecutionResult, AnnotationEditorMode, AnnotationEditorModeChange, AnnotationEditorState, AnnotationLayerRenderEvent, AutoActionConfig, BookmarkClick, ChangedPage, ChangedRotation, ChangedScale, ContentProtectionConfig, ControlVisibilityConfig, DocumentError, DocumentMetadata, DocumentOutline, DocumentPageText, ErrorConfig, ExternalLinkTarget, FindMatchesCount, FindOperation, FormDataMap, GroupVisibilityConfig, LayersChange, LayoutConfig, NamedActionEvent, PageRenderInfo, PagesEditedEvent, PagesInfo, PdfSignatureStorage, PresentationMode, ReadAloudState, SearchOptions, SearchResult, SidebarPosition, SidebarViewChange, SidebarViewName, ThemeConfig, ToolbarDensity, ToolbarPosition, ViewerConfig, WatermarkConfig };