pdf angular bytearray blob

PDF Blob no muestra contenido, Angular 2



bytearray (3)

Tengo un problema muy similar a este Blob PDF: la ventana emergente no muestra contenido , pero estoy usando Angular 2. La respuesta a la pregunta fue establecer responseType en arrayBuffer, pero no funciona en Angular 2, el error es que reponseType no funciona existen en el tipo RequestOptionsArgs. También intenté extenderlo con BrowserXhr, pero aún no funciona ( https://github.com/angular/http/issues/83 ).

Mi código es:

createPDF(customerServiceId: string) { console.log("Sending GET on " + this.getPDFUrl + "/" + customerServiceId); this._http.get(this.getPDFUrl + ''/'' + customerServiceId).subscribe( (data) => { this.handleResponse(data); }); }

Y el método handleResponse:

handleResponse(data: any) { console.log("[Receipt service] GET PDF byte array " + JSON.stringify(data)); var file = new Blob([data._body], { type: ''application/pdf'' }); var fileURL = URL.createObjectURL(file); window.open(fileURL); }

También intenté guardar el método SaveAs de FileSaver.js, pero es el mismo problema, se abre pdf, pero el contenido no se muestra. Gracias


Amit, puede cambiar el nombre del nombre de archivo agregando una variable al final de la cadena para que saveAs(res, "myPDF.pdf");

Se convierte

saveAs(res, "myPDF_"+someVariable+".pdf");

donde someVariable podría ser un contador o mi favorito personal una cadena de fecha y hora.


Tuve muchos problemas con la descarga y la visualización del contenido de PDF, probablemente perdí uno o dos días para solucionarlo, así que publicaré un ejemplo práctico de cómo descargar con éxito PDF o abrirlo en una nueva pestaña:

myService.ts

downloadPDF(): any { return this._http.get(url, { responseType: ResponseContentType.Blob }).map( (res) => { return new Blob([res.blob()], { type: ''application/pdf'' }) } }

myComponent.ts

this.myService.downloadPDF().subscribe( (res) => { saveAs(res, "myPDF.pdf"); //if you want to save it - you need file-saver for this : https://www.npmjs.com/package/file-saver var fileURL = URL.createObjectURL(res); window.open(fileURL); / if you want to open it in new tab } );

NOTA

También vale la pena mencionar que si está extendiendo la clase Http para agregar headers a todas sus solicitudes o algo así, también puede crear problemas para descargar PDF porque anulará RequestOptions , que es donde agregamos responseType: ResponseContentType.Blob y esto The request body isn''t either a blob or an array buffer error de The request body isn''t either a blob or an array buffer .


ANGULAR 5

Tuve el mismo problema que perdí unos días en eso.

Aquí mi respuesta puede ayudar a otros, lo que ayudó a renderizar pdf.

Para mí, aunque si menciono como responseType: ''arraybuffer'', no pude tomarlo.

Para eso debe mencionar como responseType: ''arraybuffer'' como ''json''. ( Reference )

Código de trabajo

downloadPDF(): any { return this._http.get(url, { responseType: ''blob'' as ''json'' }).subscribe((res) => { var file = new Blob([res], { type: ''application/pdf'' }); var fileURL = URL.createObjectURL(file); window.open(fileURL); } }

Referido desde el siguiente enlace

Reference