ng2-pdfjs-viewer
Version:
The most comprehensive Angular PDF viewer, powered by Mozilla PDF.js 6 — view, annotate, sign, fill forms, search, and read aloud from one component. 8.3M+ downloads, mobile-first, production-ready.
78 lines (75 loc) • 3.9 kB
TypeScript
import { EventEmitter, Signal, Injector } from '@angular/core';
import { ChangedRotation, PagesInfo, DocumentError, FindMatchesCount, ReadAloudState, AnnotationEditorState, AnnotationEditorMode, SidebarViewChange, DocumentMetadata, DocumentOutline, FormDataMap, PresentationMode } from 'ng2-pdfjs-viewer';
interface PdfViewerSignalSource {
onPageChange: EventEmitter<number>;
onScaleChange: EventEmitter<number>;
onRotationChange: EventEmitter<ChangedRotation>;
onPagesInit: EventEmitter<PagesInfo>;
onDocumentError: EventEmitter<DocumentError>;
onUpdateFindMatchesCount: EventEmitter<FindMatchesCount>;
onReadAloudStateChange: EventEmitter<ReadAloudState>;
onAnnotationEditorStateChange: EventEmitter<AnnotationEditorState>;
annotationEditorChange: EventEmitter<AnnotationEditorMode>;
onSidebarViewChanged: EventEmitter<SidebarViewChange>;
onMetadataLoaded: EventEmitter<DocumentMetadata>;
onOutlineLoaded: EventEmitter<DocumentOutline>;
formDataChange: EventEmitter<FormDataMap>;
onPresentationModeChanged: EventEmitter<PresentationMode>;
zoomChange: EventEmitter<string>;
cursorChange: EventEmitter<string>;
scrollChange: EventEmitter<string>;
spreadChange: EventEmitter<string>;
pageModeChange: EventEmitter<string>;
}
interface PdfViewerSignals {
/** Current 1-based page number; undefined until the first page change. */
page: Signal<number | undefined>;
/** Current zoom scale factor (1 = 100%); undefined until the first scale change. */
scale: Signal<number | undefined>;
/** Total page count, available once the document's pages initialize. */
totalPages: Signal<number | undefined>;
/** True once the document's pages have initialized. */
loaded: Signal<boolean>;
/** Last document-load error, or undefined if none. */
error: Signal<DocumentError | undefined>;
/** Page rotation state ({ rotation, page }). */
rotation: Signal<ChangedRotation | undefined>;
/** Live find/search match counts ({ current, total }). */
findMatches: Signal<FindMatchesCount | undefined>;
/** Read-aloud progress ({ status, page, sentence? }). */
readAloud: Signal<ReadAloudState | undefined>;
/** Annotation editor undo/empty/selection state. */
annotationEditor: Signal<AnnotationEditorState | undefined>;
/** Active annotation editor tool (highlight / ink / freetext / ...). */
annotationEditorMode: Signal<AnnotationEditorMode | undefined>;
/** Current sidebar panel ({ view }). */
sidebar: Signal<SidebarViewChange | undefined>;
/** Document metadata (title / author / ...). */
metadata: Signal<DocumentMetadata | undefined>;
/** Document outline / bookmarks ({ items?, hasOutline }). */
outline: Signal<DocumentOutline | undefined>;
/** Current AcroForm field values. */
formData: Signal<FormDataMap | undefined>;
/** Presentation (fullscreen) mode ({ active }). */
presentationMode: Signal<PresentationMode | undefined>;
/** Zoom mode string (e.g. 'auto', 'page-fit', '125'). */
zoom: Signal<string | undefined>;
/** Cursor tool ('select' | 'hand'). */
cursor: Signal<string | undefined>;
/** Scroll mode ('vertical' | 'horizontal' | 'wrapped' | 'page'). */
scroll: Signal<string | undefined>;
/** Spread mode ('none' | 'odd' | 'even'). */
spread: Signal<string | undefined>;
/** Page (view) mode. */
pageMode: Signal<string | undefined>;
}
/**
* Project the viewer's outputs into read-only signals. See the file header for
* usage and the injection-context rules. The returned signals are live: each
* updates when its source output next fires.
*/
declare function pdfViewerSignals(viewer: PdfViewerSignalSource, options?: {
injector?: Injector;
}): PdfViewerSignals;
export { pdfViewerSignals };
export type { PdfViewerSignalSource, PdfViewerSignals };