2017-12-04 13 views
0

私はPDFを生成し、そのパスを取得する関数を呼び出しています。コールバックでは、PDFをダウンロードしてダウンロードします。呼び出し:Node.jsでpdfkit PDFファイルを生成するには、どのようにして適切なコールバックを行うことができますか?

create_pdf(data, function(path) { 
res.download(path) 
}) 

そして、これが関数である:

const PDFDocument = require('pdfkit') 
function create_pdf(input, callback) { 
    let doc = new PDFDocument({ margin: 0 }) 
    doc.fillColor('Black').fontSize(22) 
     .font('Scandia-bold') 
     .text(input, 167, 265, { 
      align: 'center', 
      width: 280 
     }) 
    doc.on('end', function() { callback(path) }) 
    doc.end() 
} 

しかし、サーバー上で生成されたPDFは、非常に微細である間、どのようなユーザーがダウンロードが終わると、いつも壊れ/破損したPDFです。 PDFの作成が完了する前に(私のコールバックコードが間違っている)自分の関数がパスを送信しているという問題がありますか?または何?

+0

申し訳ありませんが、関数の内部パスがライン(重要ではないが)を持っています: ' let path = __dirname + '/../generated_pdf/' + input.id + '.pdf'' –

答えて

0

私は「writeStream」を識別するために持っていた機能の中で:)気にしないし、それが終了したときにコールバックを行うん:

writeStream = fs.createWriteStream(path) 
doc.pipe(writeStream) 

writeStream.on('finish', function() { 
    callback(path) 
}) 
関連する問題