ng-pdf-renderer
Version:
A modern, zero-configuration PDF viewer for Angular applications with enhanced error handling, auto-fit, text selection, and responsive design
119 lines (118 loc) • 3.96 kB
TypeScript
import { EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
import { PdfOptions, PdfError } from '../models/pdf-options.model';
import * as i0 from "@angular/core";
/**
* Main component for rendering PDFs
* Uses modern Angular patterns including standalone components and signals
*/
export declare class PdfViewerComponent implements OnInit, OnDestroy, OnChanges {
src: string | Uint8Array;
options?: PdfOptions;
pageChange: EventEmitter<number>;
documentLoaded: EventEmitter<any>;
loadingStateChange: EventEmitter<boolean>;
errorOccurred: EventEmitter<PdfError>;
documentLoadError: EventEmitter<any>;
errorStateChange: EventEmitter<string | null>;
canvasContainer: ElementRef<HTMLDivElement>;
private pdfService;
private destroy$;
currentPage: import("@angular/core").WritableSignal<number>;
totalPages: import("@angular/core").WritableSignal<number>;
zoom: import("@angular/core").WritableSignal<number>;
rotation: import("@angular/core").WritableSignal<number>;
loading: import("@angular/core").WritableSignal<boolean>;
error: import("@angular/core").WritableSignal<string | null>;
private currentRenderTask;
/**
* Set loading state and emit event
*/
private setLoadingState;
/**
* Set error state and emit event
*/
private setErrorState;
/**
* Handle input changes - CRITICAL for src changes
*/
ngOnChanges(changes: SimpleChanges): void;
/**
* Initialize the component
*/
ngOnInit(): void;
/**
* Perform complete cleanup of all PDF rendering artifacts
*/
private performCompleteCleanup;
/**
* Clean up and reload PDF when src changes
*/
private cleanupAndReload;
/**
* Clean up subscriptions on component destruction
*/
ngOnDestroy(): void;
/**
* Load the PDF document
*/
private loadDocument;
/**
* Render a specific page of the PDF
* @param pageNumber The page number to render
*/
private renderPage;
/**
* Render all pages of the PDF in continuous mode
*/
private renderAllPages;
/**
* Observe page visibility to update current page number
*/
private observePageVisibility;
/**
* Handle page change event from controls
* @param pageNumber The new page number
*/
onPageChange(pageNumber: number): void;
/**
* Handle zoom change event from controls
* @param zoom The new zoom level
*/
onZoomChange(zoom: number): void;
/**
* Handle rotation change event from controls
* @param rotation The rotation change in degrees
*/
onRotationChange(rotation: number): void;
/**
* Handle download button click
*/
onDownload(): void;
/**
* Handle print button click
*/
onPrint(): void;
/**
* Handle search request
* @param text The text to search for
*/
onSearch(text: string): Promise<void>;
/**
* Clear all search highlights
*/
private clearSearchHighlights;
/**
* Handle and emit PDF errors with proper categorization
*/
private handlePdfError;
/**
* Get user-friendly error messages based on error type
*/
private getErrorMessage;
/**
* Categorize errors based on their characteristics
*/
private categorizeError;
static ɵfac: i0.ɵɵFactoryDeclaration<PdfViewerComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<PdfViewerComponent, "ng-pdf-viewer", never, { "src": { "alias": "src"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "pageChange": "pageChange"; "documentLoaded": "documentLoaded"; "loadingStateChange": "loadingStateChange"; "errorOccurred": "errorOccurred"; "documentLoadError": "documentLoadError"; "errorStateChange": "errorStateChange"; }, never, never, true, never>;
}