I am trying to use ng2-pdf-viewer in my Angular 7 project. Initially, I was having a cors issue which I solved with this advice. Now, I am experiencing the following error:
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
I tried to implement the answer from this post, but had no luck. It may be correct and I am misunderstanding how to implement.
my ts:
import {Component, OnInit} from '@angular/core'
import {DomSanitizer, SafeUrl} from '@angular/platform-browser'
@Component({
selector:'app-help-dialog',
templateUrl:'./helpDialog.html',
styleUrls:['../../style/style.css']
})
export class HelpDialog implements OnInit {
pdfSource:string = 'https://url/to/my/pdf.pdf'
safeUrl:SafeUrl
constructor(private sanitizer: DomSanitizer) {
}
ngOnInit() {
this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.pdfSource)
}
}
and my template:
<pdf-viewer [src]='safeUrl'>
</pdf-viewer>
If you are using url, then what you should do is just use pdfSource
instead of safeUrl
.
If you are using base64 encoding this is how I fixed it: In .html file
<pdf-viewer [src]="pdfSource"></pdf-viewer>
In .ts file
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;
}
}
Short answer:
<pdf-viewer [src]="safeUrl.changingThisBreaksApplicationSecurity"></pdf-viewer>
you can just access the url via .changingThisBreaksApplicationSecurity, hope this help you or someone else with same issue.
reply this post if there is another requirement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With