J'essaie de générer un fichier PDF côté serveur en utilisant le nœud js et de le télécharger du côté client sur l'angle 4 (quelque chose comme Google Drive lorsque vous appuyez sur télécharger en PDF).télécharger le flux de nœud avec angulaire 2
Le code Node JS ressemble à ceci:
var pdf = require('html-pdf');
app.get('/pdf/contacts', function(req, res) {
Contact.find(function(error, response) {
res.render('pdfs/views/contacts', {name: 'Daniel Pacuraru', contacts: response}, function(error, thtml) {
var opts = {
"format": "A4",
"orientation": "portrait",
"border": "0.4in"
};
pdf.create(thtml, opts).toStream(function(err, stream){
res.attachment('pdfname.pdf');
stream.pipe(res);
});
});
});
});
Du côté 4 angulaire je suis quelque chose comme ceci:
import * as FileSaver from 'file-saver';
downloadContacts(): Promise<any> {
return this.http
.get('http://localhost:3000/pdf/contacts')
.toPromise()
.then(response => {
FileSaver.saveAs(response, "testdata.pdf");
});
}
Je reçois cette erreur: Failed to execute 'createObjectURL' on 'URL'
et si je change la ligne dans ce
FileSaver.saveAs(response.blob(), "testdata.pdf");
puis-je obtenir cette erreur: Error: The request body isn't either a blob or an array buffer
Je n'arrive pas à comprendre ce que je fais mal, btw y at-il un moyen de télécharger ce flux facile sans aucun plugin comme l'économiseur de fichiers? puisque si je viens d'entrer et le lien api sur le navigateur, il me télécharge automatiquement ce fichier pdf.
Merci d'avance, Daniel.