使用nodejs将下载的映像写入pdfkit

时间:2015-02-20 14:20:05

标签: node.js request web-scraping fs node-pdfkit

我正在尝试使用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

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分: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*
});

否则,在任何有机会写入文档之前,您正在关闭文档,因为请求调用(以及后续管道)都是异步发生的。