我正在尝试在我的 Angular 7 项目中使用 ng2-pdf-viewer。最初,我遇到了一个 cors 问题,我用这个建议解决了这个问题。现在,我遇到以下错误:
Invalid parameter object: need either .data, .range or .url
at Object.getDocument (pdf.js:7919)
at PdfViewerComponent.push.../../../node_modules/ng2-pdf-viewer/ng2-pdf-viewer.es5.js.PdfViewerComponent.loadPDF
Run Code Online (Sandbox Code Playgroud)
我试图实现这篇文章中的答案,但没有运气。这可能是正确的,我误解了如何实施。
我的 ts:
Invalid parameter object: need either .data, .range or .url
at Object.getDocument (pdf.js:7919)
at PdfViewerComponent.push.../../../node_modules/ng2-pdf-viewer/ng2-pdf-viewer.es5.js.PdfViewerComponent.loadPDF
Run Code Online (Sandbox Code Playgroud)
和我的模板:
<pdf-viewer [src]='safeUrl'>
</pdf-viewer>
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您使用 url,那么您应该做的就是使用pdfSource而不是safeUrl.
如果您使用的是 base64 编码,这就是我修复它的方法:在 .html 文件中
<pdf-viewer [src]="pdfSource"></pdf-viewer>
Run Code Online (Sandbox Code Playgroud)
在 .ts 文件中
import { Component, OnInit } from '@angular/core';
@Component({
...
})
export class testComponent implements OnInit {
base_64_string = 'this_is_where_you_put_base_64';
pdfSource;
constructor() {}
ngOnInit() {
this.pdfSource = this._base64ToArrayBuffer(this.pdfSource);
}
_base64ToArrayBuffer(base64) {
const binary_string = window.atob(base64);
const len = binary_string.length;
const bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
return bytes.buffer;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5589 次 |
| 最近记录: |