UNPKG

ng-cw-v12

Version:

Angular UI Component Library

98 lines (93 loc) 5.31 kB
import * as i0 from '@angular/core'; import { Component, Input, NgModule } from '@angular/core'; import * as i2 from '@angular/common'; import { CommonModule } from '@angular/common'; import { Subject } from 'rxjs'; import * as i1 from '@angular/platform-browser'; class PdfViewerComponent { constructor(sanitizer) { this.sanitizer = sanitizer; /** pdf文件地址 */ this.ncUrl = ''; this.useIframe = true; this.messageListener = null; this.errorSubject = new Subject(); this.messageListener = (event) => { // 检查消息类型 if (event.data && event.data.type === 'iframe-error') { const errorData = event.data; this.errorSubject.next(errorData); if (errorData.message.includes('Promise.withResolvers is not a function') || errorData.message.includes("Unexpected token '{'") || errorData.message.includes("Unexpected token '('")) { console.log(errorData.message); //只在第一次错误时切换到 object 模式 if (this.useIframe) { this.switchToObjectMode(); } } } }; window.addEventListener('message', this.messageListener); } ngOnChanges(changes) { if (changes['ncUrl']) { this.updateViewerUrls(); } } ngAfterViewInit() { } ngOnDestroy() { if (this.messageListener) { window.removeEventListener('message', this.messageListener); } } updateViewerUrls() { // 组织 pdfjs viewer 方式url const iframeUrl = `assets/pdfjs-dist-build/web/viewer.html?file=${encodeURIComponent(this.ncUrl)}`; this.viewerUrl = this.sanitizer.bypassSecurityTrustResourceUrl(iframeUrl); // 组织 object 方式url this.objectUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.ncUrl); } switchToObjectMode() { this.useIframe = false; console.log(`%c 已切换到 object 模式加载 PDF `, `background:#67C23A;border:1px solid #67C23A; padding: 1px; border-radius: 2px; color: #fff;`); } } PdfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); PdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: PdfViewerComponent, selector: "nc-pdf-viewer", inputs: { ncUrl: "ncUrl" }, usesOnChanges: true, ngImport: i0, template: "<!-- \u4F18\u5148\u4F7F\u7528 iframe \u52A0\u8F7D pdfjs viewer -->\n<iframe *ngIf=\"useIframe\" #pdfIframe [src]=\"viewerUrl\" width=\"100%\" height=\"100%\" [attr.frameBorder]=\"0\"\n style=\"border: none;\">\n</iframe>\n\n<!-- \u5F53 iframe \u5931\u8D25\u65F6\uFF0C\u4F7F\u7528 object \u76F4\u63A5\u52A0\u8F7D PDF -->\n<object *ngIf=\"!useIframe\" [data]=\"objectUrl\" width=\"100%\" height=\"100%\" type=\"application/pdf\">\n <p>\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u663E\u793APDF\u6587\u4EF6\u3002<a [href]=\"objectUrl\" target=\"_blank\">\u70B9\u51FB\u8FD9\u91CC\u4E0B\u8F7DPDF</a></p>\n</object>", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: PdfViewerComponent, decorators: [{ type: Component, args: [{ selector: 'nc-pdf-viewer', templateUrl: './pdf-viewer.component.html', styleUrls: ['./pdf-viewer.component.less'] }] }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { ncUrl: [{ type: Input }] } }); class NcPdfViewerModule { } NcPdfViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcPdfViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); NcPdfViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcPdfViewerModule, declarations: [PdfViewerComponent], imports: [CommonModule], exports: [PdfViewerComponent] }); NcPdfViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcPdfViewerModule, imports: [[ CommonModule ]] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcPdfViewerModule, decorators: [{ type: NgModule, args: [{ declarations: [ PdfViewerComponent ], imports: [ CommonModule ], exports: [ PdfViewerComponent ] }] }] }); /** * Generated bundle index. Do not edit. */ export { NcPdfViewerModule, PdfViewerComponent }; //# sourceMappingURL=ng-cw-v12-pdf-viewer.js.map