ng-cw-v12
Version:
Angular UI Component Library
98 lines (93 loc) • 5.31 kB
JavaScript
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