2017-09-21 4 views
0

Ce code serveur Meteor essaie de créer un pdf afin de l'attacher à un email. Il fait le pdf Ok mais quand puting dans un blob, il retourne cette erreur:obtenir un blob du flux

TypeError: Blob is not a function

"use strict"; 
let PDFDocument = require('pdfkit'); 
let blobStream = require('blob-stream'); 

'make': function() { 
    let doc = new PDFDocument(metaData); // readable Node streams 
    let stream = doc.pipe(blobStream()); 
    doc.fontSize('14') 
     .text('some text') 
     .end(); 
    stream.on('finish', function (blob) { 
     return stream.toBlob(blob); //<=== error line 
    }); 
    }, 
+0

d'où vient 'metaData' venir? –

Répondre

1

Comme par Documentation, stream.toBlob() ATTEND type de sortie pour blob, à savoir application/text, application/pdf.

Pouvez-vous s'il vous plaît essayer ci-dessous peice de code,

stream.on('finish', function() { 
//get a blob you can do whatever you like with 
blob = stream.toBlob('application/pdf'); 
return blob; 
}); 

Veuillez passer par la Documentation. Il est dit ci-dessous,

PDFDocument instances are readable Node streams. They don't get saved anywhere automatically, but you can call the pipe method to send the output of the PDF document to another writable Node stream as it is being written. When you're done with your document, call the end method to finalize it. Here is an example showing how to pipe to a file or an HTTP response.

doc.pipe fs.createWriteStream('/path/to/file.pdf') # write to PDF 
doc.pipe res          # HTTP response 

# add stuff to PDF here using methods described below... 

# finalize the PDF and end the stream 
doc.end(); 
+0

Je reçois toujours la même erreur. J'ai changé la ligne à 'let blob = stream.toBlob ('application/pdf');' –

+1

Pouvez-vous produire la trace de la pile dans votre question? Alors que tout le monde pourrait voir ce qui ne va pas? –

+0

mis à jour ma réponse avec plus de détails. Vous devez suivre les directives appropriées de la documentation. Vous devez reconfirmer votre code 'doc.pipe'. Reportez-vous ci-dessus pour plus. –