22

私はpdfkitを使用してpdfファイルを生成していますが、このpdfファイルをブラウザに送信したいと考えています。

しかし、私はメッセージを受け取って います"TypeError: listener must be a function", また、ファイルは私が望まない親ディレクトリに生成されています。

親ディレクトリに保存せずにpdfファイルを生成してブラウザに送信する方法を誰かに説明してもらえますか?
ここではexpressjsを使用しています。

私のコード

var PDFDocument = require('pdfkit');                      
var fs=require('fs');
doc = new PDFDocument();
doc.moveTo(300, 75)
   .lineTo(373, 301)
   .lineTo(181, 161)
   .lineTo(419, 161)
   .lineTo(227, 301)
   .fill('red', 'even-odd');  

var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...';  

doc.y = 320;
doc.fillColor('black')
doc.text(loremIpsum, {
   paragraphGap: 10,
   indent: 20,
   align: 'justify',
   columns: 2
});  

doc.write('out.pdf');
res.download('out.pdf');
4

2 に答える 2

23

doc.writeこれも非推奨の方法なので使用しないでください。代わりに、パイプを使用してドキュメントに情報をストリーミングする場所を伝え、次のように を使用してドキュメントを閉じることを忘れないでくださいdoc.end()

doc = new PDFDocument();
doc.pipe( fs.createWriteStream('out.pdf') );

// rest of the code goes here...

doc.end();

doc.pipe()一番上にあることは重要ではないことに注意してくださいdoc.end(). 最後に、 を使用して応答に直接ストリーミングできることに注意してください。pipe最初にファイルを作成してからダウンロードする必要はありません。

doc.pipe( res )
于 2014-05-13T07:05:16.553 に答える