@kariudo/ng2-pdfjs-viewer
Version:
An angular component for displaying pdfs, wrapping the latest Mozilla PDF.js.
1 lines • 27.9 kB
Source Map (JSON)
{"version":3,"file":"kariudo-ng2-pdfjs-viewer.mjs","sources":["../../src/ng2-pdfjs-viewer.component.ts","../../src/ng2-pdfjs-viewer.module.ts","../../kariudo-ng2-pdfjs-viewer.ts"],"sourcesContent":["import { Component, Input, Output, OnInit, OnDestroy, ViewChild, EventEmitter, ElementRef } from '@angular/core';\n\nexport type ChangedPage = number;\n\nexport type ChangedScale = number;\n\nexport interface ChangedRotation {\n rotation: number;\n page: number;\n}\n\n@Component({\n selector: 'ng2-pdfjs-viewer',\n template: `<iframe title=\"ng2-pdfjs-viewer\" [hidden]=\"externalWindow || (!externalWindow && !pdfSrc)\" #iframe width=\"100%\" height=\"100%\"></iframe>`\n})\nexport class PdfJsViewerComponent implements OnInit, OnDestroy {\n @ViewChild('iframe', { static: true }) iframe: ElementRef;\n static lastID = 0;\n @Input() public viewerId = `ng2-pdfjs-viewer-ID${++PdfJsViewerComponent.lastID}`;\n @Output() onBeforePrint: EventEmitter<void> = new EventEmitter();\n @Output() onAfterPrint: EventEmitter<void> = new EventEmitter();\n @Output() onDocumentLoad: EventEmitter<void> = new EventEmitter();\n @Output() onPageChange: EventEmitter<ChangedPage> = new EventEmitter();\n @Output() onScaleChange: EventEmitter<ChangedScale> = new EventEmitter();\n @Output() onRotationChange: EventEmitter<ChangedRotation> = new EventEmitter();\n @Input() public viewerFolder: string;\n @Input() public externalWindow: boolean = false;\n @Input() public target: string = '_blank';\n @Input() public showSpinner: boolean = true;\n @Input() public downloadFileName: string;\n /** Display open file button in secondary toolbar menu. */\n @Input() public openFile: boolean = true;\n /** Display annotations/editor controls on toolbar. */\n @Input() public annotations: boolean = false;\n @Input() public download: boolean = true;\n @Input() public startDownload: boolean;\n @Input() public viewBookmark: boolean = true;\n @Input() public print: boolean = true;\n @Input() public startPrint: boolean;\n @Input() public fullScreen: boolean = true;\n //@Input() public showFullScreen: boolean;\n @Input() public find: boolean = true;\n @Input() public zoom: string;\n @Input() public nameddest: string;\n @Input() public pagemode: string;\n @Input() public lastPage: boolean;\n @Input() public rotatecw: boolean;\n @Input() public rotateccw: boolean;\n @Input() public cursor: string;\n @Input() public scroll: string;\n @Input() public spread: string;\n @Input() public locale: string;\n @Input() public useOnlyCssZoom: boolean = false;\n @Input() public errorOverride: boolean = false;\n @Input() public errorAppend: boolean = true;\n @Input() public errorMessage: string;\n @Input() public diagnosticLogs: boolean = false;\n\n @Input() public externalWindowOptions: string;\n public viewerTab: any;\n private _src: string | Blob | Uint8Array;\n private _page: number;\n\n @Input()\n public set page(_page: number) {\n this._page = _page;\n if(this.PDFViewerApplication) {\n this.PDFViewerApplication.page = this._page;\n } else {\n if(this.diagnosticLogs) console.warn(\"Document is not loaded yet!!!. Try to set page# after full load. Ignore this warning if you are not setting page# using '.' notation. (E.g. pdfViewer.page = 5;)\");\n }\n }\n\n public get page() {\n if(this.PDFViewerApplication) {\n return this.PDFViewerApplication.page;\n } else {\n if(this.diagnosticLogs) console.warn(\"Document is not loaded yet!!!. Try to retrieve page# after full load.\");\n }\n }\n\n @Input()\n public set pdfSrc(_src: string | Blob | Uint8Array) {\n this._src = _src;\n }\n\n public get pdfSrc() {\n return this._src;\n }\n\n public get PDFViewerApplicationOptions() {\n let pdfViewerOptions = null;\n if (this.externalWindow) {\n if (this.viewerTab) {\n pdfViewerOptions = this.viewerTab.PDFViewerApplicationOptions;\n }\n } else {\n if (this.iframe.nativeElement.contentWindow) {\n pdfViewerOptions = this.iframe.nativeElement.contentWindow.PDFViewerApplicationOptions;\n }\n }\n return pdfViewerOptions;\n }\n\n public get PDFViewerApplication() {\n let pdfViewer = null;\n if (this.externalWindow) {\n if (this.viewerTab) {\n pdfViewer = this.viewerTab.PDFViewerApplication;\n }\n } else {\n if (this.iframe.nativeElement.contentWindow) {\n pdfViewer = this.iframe.nativeElement.contentWindow.PDFViewerApplication;\n }\n }\n if(this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer ->\", pdfViewer);\n return pdfViewer;\n }\n\nngOnInit(): void { \n // Load PDF for embedded views.\n if (!this.externalWindow) {\n this.loadPdf();\n }\n\n // Bind events.\n this.bindToPdfJsEventBus();\n}\n\n /**\n * Waits for the PDF.js viewer to be ready, and binds the the event bus.\n */\n private bindToPdfJsEventBus() {\n document.addEventListener(\"webviewerloaded\", () => {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: webviewerloaded event received\");\n if (!this.PDFViewerApplication) {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: Viewer not yet (or no longer) available, events can not yet be bound.\");\n return;\n }\n this.PDFViewerApplication.initializedPromise.then(() => {\n // Configure the controls.\n const app = this.configureVisibleFeatures();\n\n const eventBus = app.eventBus;\n // Once initialized, attach the events.\n // Document Loaded.\n eventBus.on(\"documentloaded\", () => {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document has now been loaded!\");\n this.onDocumentLoad.emit();\n });\n\n // Pages init.\n eventBus.on(\"pagesinit\", () => {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: All pages have been rendered!\");\n });\n\n // Before print.\n eventBus.on(\"beforeprint\", () => {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document is about to be printed!\");\n this.onBeforePrint.emit();\n });\n\n // After print.\n eventBus.on(\"afterprint\", () => {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document has been printed!\");\n this.onAfterPrint.emit();\n });\n\n // Page change.\n eventBus.on(\"pagechanging\", (event) => {\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The page has changed:\", event.pageNumber);\n this.onPageChange.emit(event.pageNumber);\n });\n\n // Rotation change.\n eventBus.on(\"rotationchanging\", (event) => {\n const newRotation: ChangedRotation = {\n rotation: event.pagesRotation,\n page: event.pageNumber\n }\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The rotation has changed!\", event);\n this.onRotationChange.emit(newRotation);\n })\n\n // Scale change.\n eventBus.on(\"scalechanging\", (event) => {\n const newScale: ChangedScale = event.scale;\n if (this.diagnosticLogs) console.debug(\"PdfJsViewer: The document has scale has changed!\", newScale);\n this.onScaleChange.emit(newScale);\n })\n });\n });\n }\n\n private configureVisibleFeatures() {\n const app = this.PDFViewerApplication;\n const toolbarElement = app.appConfig.secondaryToolbar.toolbar;\n // Display of \"open file\" button.\n app.appConfig.secondaryToolbar.openFileButton.hidden = !this.openFile;\n // Hide the horizontal separator in the menu if the control is hidden.\n toolbarElement.querySelector('.horizontalToolbarSeparator').hidden = !this.openFile;\n // Display of annotations/editor controls.\n app.appConfig.toolbar.editorFreeTextButton.hidden = !this.annotations;\n app.appConfig.toolbar.editorStampButton.hidden = !this.annotations;\n app.appConfig.toolbar.editorInkButton.hidden = !this.annotations;\n app.appConfig.toolbar.editorHighlightButton.hidden = !this.annotations;\n return app;\n }\n\n public refresh(): void { // Needs to be invoked for external window or when needs to reload pdf\n this.loadPdf();\n }\n\n private relaseUrl?: () => void; // Avoid memory leak with `URL.createObjectURL`\n private loadPdf() {\n if (!this._src) {\n return;\n }\n\n if (this.externalWindow && (typeof this.viewerTab === 'undefined' || this.viewerTab.closed)) {\n this.viewerTab = window.open('', this.target, this.externalWindowOptions || '');\n if (this.viewerTab == null) {\n console.error(\"ng2-pdfjs-viewer: For 'externalWindow = true'. i.e opening in new tab to work, pop-ups should be enabled.\");\n return;\n }\n\n if (this.showSpinner) {\n this.viewerTab.document.write(`\n <style>\n .loader {\n position: fixed;\n left: 40%;\n top: 40%;\n border: 16px solid #f3f3f3;\n border-radius: 50%;\n border-top: 16px solid #3498db;\n width: 120px;\n height: 120px;\n animation: spin 2s linear infinite;\n }\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n </style>\n <div class=\"loader\"></div>\n `);\n }\n }\n\n this.relaseUrl?.();\n let fileUrl;\n if (this._src instanceof Blob) {\n const url = URL.createObjectURL(this._src);\n fileUrl = encodeURIComponent(url);\n this.relaseUrl = () => URL.revokeObjectURL(url);\n } else if (this._src instanceof Uint8Array) {\n let blob = new Blob([this._src], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n this.relaseUrl = () => URL.revokeObjectURL(url);\n fileUrl = encodeURIComponent(url);\n } else {\n fileUrl = this._src;\n }\n\n let viewerUrl;\n if (this.viewerFolder) {\n viewerUrl = `${this.viewerFolder}/web/viewer.html`;\n } else {\n viewerUrl = `assets/pdfjs/web/viewer.html`;\n }\n\n viewerUrl += `?file=${fileUrl}`;\n\n if (typeof this.viewerId !== 'undefined') {\n viewerUrl += `&viewerId=${this.viewerId}`;\n }\n if (typeof this.onBeforePrint !== 'undefined') {\n viewerUrl += `&beforePrint=true`;\n }\n if (typeof this.onAfterPrint !== 'undefined') {\n viewerUrl += `&afterPrint=true`;\n }\n if (typeof this.onDocumentLoad !== 'undefined') {\n viewerUrl += `&pagesLoaded=true`;\n }\n if (typeof this.onPageChange !== 'undefined') {\n viewerUrl += `&pageChange=true`;\n }\n\n if (this.downloadFileName) {\n if(!this.downloadFileName.endsWith(\".pdf\")) {\n this.downloadFileName += \".pdf\";\n }\n viewerUrl += `&fileName=${this.downloadFileName}`;\n }\n if (typeof this.openFile !== 'undefined') {\n viewerUrl += `&openFile=${this.openFile}`;\n }\n if (typeof this.download !== 'undefined') {\n viewerUrl += `&download=${this.download}`;\n }\n if (this.startDownload) {\n viewerUrl += `&startDownload=${this.startDownload}`;\n }\n if (typeof this.viewBookmark !== 'undefined') {\n viewerUrl += `&viewBookmark=${this.viewBookmark}`;\n }\n if (typeof this.print !== 'undefined') {\n viewerUrl += `&print=${this.print}`;\n }\n if (this.startPrint) {\n viewerUrl += `&startPrint=${this.startPrint}`;\n }\n if (typeof this.fullScreen !== 'undefined') {\n viewerUrl += `&fullScreen=${this.fullScreen}`;\n }\n // if (this.showFullScreen) {\n // viewerUrl += `&showFullScreen=${this.showFullScreen}`;\n // }\n if (typeof this.find !== 'undefined') {\n viewerUrl += `&find=${this.find}`;\n }\n if (this.lastPage) {\n viewerUrl += `&lastpage=${this.lastPage}`;\n }\n if (this.rotatecw) {\n viewerUrl += `&rotatecw=${this.rotatecw}`;\n }\n if (this.rotateccw) {\n viewerUrl += `&rotateccw=${this.rotateccw}`;\n }\n if (this.cursor) {\n viewerUrl += `&cursor=${this.cursor}`;\n }\n if (this.scroll) {\n viewerUrl += `&scroll=${this.scroll}`;\n }\n if (this.spread) {\n viewerUrl += `&spread=${this.spread}`;\n }\n if (this.locale) {\n viewerUrl += `&locale=${this.locale}`;\n }\n if (this.useOnlyCssZoom) {\n viewerUrl += `&useOnlyCssZoom=${this.useOnlyCssZoom}`;\n }\n\n if (this._page || this.zoom || this.nameddest || this.pagemode) viewerUrl += \"#\"\n if (this._page) {\n viewerUrl += `&page=${this._page}`;\n }\n if (this.zoom) {\n viewerUrl += `&zoom=${this.zoom}`;\n }\n if (this.nameddest) {\n viewerUrl += `&nameddest=${this.nameddest}`;\n }\n if (this.pagemode) {\n viewerUrl += `&pagemode=${this.pagemode}`;\n }\n if (this.errorOverride || this.errorAppend) {\n viewerUrl += `&errorMessage=${this.errorMessage}`;\n\n if (this.errorOverride) {\n viewerUrl += `&errorOverride=${this.errorOverride}`;\n }\n if (this.errorAppend) {\n viewerUrl += `&errorAppend=${this.errorAppend}`;\n }\n }\n\n if (this.externalWindow) {\n this.viewerTab.location.href = viewerUrl;\n } else {\n this.iframe.nativeElement.contentWindow.location.replace(viewerUrl);\n }\n \n if (this.diagnosticLogs) {\n console.debug(`PdfJsViewer: Viewer URL configuration:\n pdfSrc = ${this.pdfSrc}\n fileUrl = ${fileUrl}\n externalWindow = ${this.externalWindow}\n downloadFileName = ${this.downloadFileName}\n viewerFolder = ${this.viewerFolder}\n openFile = ${this.openFile}\n download = ${this.download}\n startDownload = ${this.startDownload}\n viewBookmark = ${this.viewBookmark}\n print = ${this.print}\n startPrint = ${this.startPrint}\n fullScreen = ${this.fullScreen}\n find = ${this.find}\n lastPage = ${this.lastPage}\n rotatecw = ${this.rotatecw}\n rotateccw = ${this.rotateccw}\n cursor = ${this.cursor}\n scrollMode = ${this.scroll}\n spread = ${this.spread}\n page = ${this.page}\n zoom = ${this.zoom}\n nameddest = ${this.nameddest}\n pagemode = ${this.pagemode}\n errorOverride = ${this.errorOverride}\n errorAppend = ${this.errorAppend}\n errorMessage = ${this.errorMessage}\n `);\n }\n }\n\n ngOnDestroy(): void {\n this.relaseUrl?.();\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { PdfJsViewerComponent } from \"./ng2-pdfjs-viewer.component\";\n\n@NgModule({\n imports: [CommonModule, PdfJsViewerComponent],\n exports: [PdfJsViewerComponent],\n})\nexport class PdfJsViewerModule {\n static forRoot(): ModuleWithProviders<PdfJsViewerModule> {\n return {\n ngModule: PdfJsViewerModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}