ng-cw-v12
Version:
Angular UI Component Library
67 lines • 10.7 kB
JavaScript
import { Component, Input } from '@angular/core';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
import * as i2 from "@angular/common";
export 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
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBc0QsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQU8vQixNQUFNLE9BQU8sa0JBQWtCO0lBVTdCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFUM0MsY0FBYztRQUNMLFVBQUssR0FBVyxFQUFFLENBQUM7UUFJNUIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUNsQixvQkFBZSxHQUEyQyxJQUFJLENBQUM7UUFDL0QsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBR3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDN0MsU0FBUztZQUNULElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7Z0JBQ3BELE1BQU0sU0FBUyxHQUFRLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHlDQUF5QyxDQUFDO29CQUN2RSxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDbEQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRTtvQkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQzlCLHVCQUF1QjtvQkFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztxQkFDM0I7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsZUFBZSxLQUFLLENBQUM7SUFFckIsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsd0JBQXdCO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLGdEQUFnRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUNULDBCQUEwQixFQUMxQiw2RkFBNkYsQ0FDOUYsQ0FBQztJQUNKLENBQUM7OytHQTNEVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzR0NUL0IsOG1CQVFTOzJGRENJLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDO21HQUdVLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmMtcGRmLXZpZXdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiBwZGbmlofku7blnLDlnYAgKi9cclxuICBASW5wdXQoKSBuY1VybDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHZpZXdlclVybCE6IFNhZmVSZXNvdXJjZVVybDtcclxuICBvYmplY3RVcmwhOiBTYWZlUmVzb3VyY2VVcmw7XHJcbiAgdXNlSWZyYW1lOiBib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIG1lc3NhZ2VMaXN0ZW5lcjogKChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZXJyb3JTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VMaXN0ZW5lciA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgIC8vIOajgOafpea2iOaBr+exu+Wei1xyXG4gICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnR5cGUgPT09ICdpZnJhbWUtZXJyb3InKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JEYXRhOiBhbnkgPSBldmVudC5kYXRhO1xyXG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoZXJyb3JEYXRhKTtcclxuICAgICAgICBpZiAoZXJyb3JEYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ1Byb21pc2Uud2l0aFJlc29sdmVycyBpcyBub3QgYSBmdW5jdGlvbicpIHx8XHJcbiAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZS5pbmNsdWRlcyhcIlVuZXhwZWN0ZWQgdG9rZW4gJ3snXCIpIHx8XHJcbiAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZS5pbmNsdWRlcyhcIlVuZXhwZWN0ZWQgdG9rZW4gJygnXCIpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvckRhdGEubWVzc2FnZSlcclxuICAgICAgICAgIC8v5Y+q5Zyo56ys5LiA5qyh6ZSZ6K+v5pe25YiH5o2i5YiwIG9iamVjdCDmqKHlvI9cclxuICAgICAgICAgIGlmICh0aGlzLnVzZUlmcmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRvT2JqZWN0TW9kZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUxpc3RlbmVyKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyduY1VybCddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlld2VyVXJscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkgeyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMubWVzc2FnZUxpc3RlbmVyKSB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5tZXNzYWdlTGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWV3ZXJVcmxzKCkge1xyXG4gICAgLy8g57uE57uHIHBkZmpzIHZpZXdlciDmlrnlvI91cmxcclxuICAgIGNvbnN0IGlmcmFtZVVybCA9IGBhc3NldHMvcGRmanMtZGlzdC1idWlsZC93ZWIvdmlld2VyLmh0bWw/ZmlsZT0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLm5jVXJsKX1gO1xyXG4gICAgdGhpcy52aWV3ZXJVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoaWZyYW1lVXJsKTtcclxuICAgIC8vIOe7hOe7hyBvYmplY3Qg5pa55byPdXJsXHJcbiAgICB0aGlzLm9iamVjdFVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLm5jVXJsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9PYmplY3RNb2RlKCkge1xyXG4gICAgdGhpcy51c2VJZnJhbWUgPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICBgJWMg5bey5YiH5o2i5YiwIG9iamVjdCDmqKHlvI/liqDovb0gUERGIGAsXHJcbiAgICAgIGBiYWNrZ3JvdW5kOiM2N0MyM0E7Ym9yZGVyOjFweCBzb2xpZCAjNjdDMjNBOyBwYWRkaW5nOiAxcHg7IGJvcmRlci1yYWRpdXM6IDJweDsgY29sb3I6ICNmZmY7YFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSDkvJjlhYjkvb/nlKggaWZyYW1lIOWKoOi9vSBwZGZqcyB2aWV3ZXIgLS0+XG48aWZyYW1lICpuZ0lmPVwidXNlSWZyYW1lXCIgI3BkZklmcmFtZSBbc3JjXT1cInZpZXdlclVybFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBbYXR0ci5mcmFtZUJvcmRlcl09XCIwXCJcbiAgICBzdHlsZT1cImJvcmRlcjogbm9uZTtcIj5cbjwvaWZyYW1lPlxuXG48IS0tIOW9kyBpZnJhbWUg5aSx6LSl5pe277yM5L2/55SoIG9iamVjdCDnm7TmjqXliqDovb0gUERGIC0tPlxuPG9iamVjdCAqbmdJZj1cIiF1c2VJZnJhbWVcIiBbZGF0YV09XCJvYmplY3RVcmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgdHlwZT1cImFwcGxpY2F0aW9uL3BkZlwiPlxuICAgIDxwPuaCqOeahOa1j+iniOWZqOS4jeaUr+aMgeaYvuekulBERuaWh+S7tuOAgjxhIFtocmVmXT1cIm9iamVjdFVybFwiIHRhcmdldD1cIl9ibGFua1wiPueCueWHu+i/memHjOS4i+i9vVBERjwvYT48L3A+XG48L29iamVjdD4iXX0=