2017-06-09 1 views
2

Je veux télécharger un fichier en format pdf en Angulaire 2, j'utilise FileSaver.js pour enregistrer le fichier en format pdf.Télécharger un fichier en Angular 2

(response) => { 
    var mediaType = 'application/pdf'; 
    let pdfContent = response["_body"]; 

    var blob = new Blob([pdfContent], {type: mediaType}); 
    var filename = 'test.pdf'; 
    //setTimeout(FileSaver.saveAs(blob, filename),10000); //Tried this but no result 
    // FileSaver.saveAs(blob(), "docitt-report-" + documentNo + ".pdf"); //tried this too 
    }, 

Mais le fichier téléchargé pdf est vide, je pensais que peut-être la ressource prend du temps alors j'ai essayé avec setTimeout, mais il n'a toujours pas aidé. Bien qu'il y ait des données dans la réponse que je pouvais voir dans la console comme response._body. Faites-moi savoir où je me trompe.

+0

Qu'est-ce 'pdfContent'? – guest271314

+0

C'est une chaîne cryptée, qui vient dans «_body» de la réponse. –

+0

Pourquoi pensez-vous qu'une "chaîne cryptée" aboutira à un fichier '.pdf'? La chaîne est-elle une chaîne "encrypted string" ou "base64"? – guest271314

Répondre

1

Je l'ai à travailler, et voici ma réponse ci-dessous:

downloadDocument(docId){ 
    const headers = new Headers({responseType:ResponseContentType.Blob}); 
    headers.append('authorization','Bearer '+token); 
    this.http.get(url,{headers:headers,responseType:ResponseContentType.Blob}).subscribe(
    (response) => {  
    FileSaver.saveAs(response.blob(), "Document-" + docId+ ".pdf"); 
    } 
); 
} 

importation FilSaver

import * as FileSaver from 'file-saver'; 
2

import 'rxjs/Rx' ; 
 

 

 

 

 
this._reportService.getReport().subscribe(data => this.downloadFile(data)),//console.log(data), 
 
       error => console.log("Error downloading the file."), 
 
       () => console.info("OK"); 
 
        
 
    When the request is ready it will call the function "downloadFile" that is defined as follows 
 
downloadFile(data: Response){ 
 
    var blob = new Blob([data], { type: 'text/csv' }); 
 
    var url= window.URL.createObjectURL(blob); 
 
    window.open(url); 
 
}