-1

pdfkit へのリクエストを使用して、Web サイトからスクレイピング & ダウンロードした画像を書き込もうとしています。

var request = require('request'),
    PDFDocument = require('pdfkit'),
	doc = new PDFDocument,
	fs = require('fs');

var wstream = fs.createWriteStream('images/0.jpeg')
var r = request(IMAGEURL).pipe(wstream);
r.on('close', function() {
doc.pipe(fs.createWriteStream('pdf/output.pdf'));    	
doc.image('images/0.jpeg');
    });
doc.end();

問題は、pdfに画像が追加されていないことです:-(

これは私が得るエラーメッセージです:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: stream.push() after EOF

これを解決する方法はありますか?

4

1 に答える 1

2

doc.end()'close' イベントを処理する関数内になるように呼び出しを移動します。

r.on('close', function() {
  doc.pipe(fs.createWriteStream('pdf/output.pdf'));     
  doc.image('images/0.jpeg');
  doc.end();   // <----- *put this here*
});

そうしないと、リクエスト呼び出し (およびその後のパイプ処理) がすべて非同期で行われるため、何かが書き込まれる前にドキュメントを閉じてしまいます。

于 2015-02-20T22:00:16.247 に答える