-1

我正在尝试使用对 pdfkit 的请求来编写从网站上抓取和下载的图像。

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()调用,使其位于处理“关闭”事件的函数内。

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 回答