2016-07-11 17 views
0

Webブラウザにpdfファイルを送り返すコードがあります。そのコードでは、httpサーバが私のpdf出力をパイプすることができる応答ストリームを渡します。モジュール間を渡すためにストリームを定義する方法

const server = http.createServer((req, res) => { 
var doc = new PDFKit({size: 'A4', layout: 'landscape', info: info, margin: 30}); 
doc.pipe(res); 
doc.text('Writing text to document'); 
doc.end(); 
}); 

私は今、添付ファイルとして同じPDF文書を郵送するnodemailerを使用したいです。だから私はこのような何かをする必要があると思う。

const Stream = require('stream').Readable; 
    const stream = new Stream(); 
    transport.sendMail({ 
    to: [email protected], 
    subject: 'Info You Wanted', 
    text: 'The data you want is in pdf attachments', 
    attachments: [{ 
    filename: 'dummy.pdf', 
    content:stream 
    }] 
}); 
const doc = new PDFKit({size: 'A4', layout: 'landscape', info: info, margin: 30}); 
doc.pipe(stream); 
doc.text('Writing text to document'); 
doc.end(); 

これは私が混乱しているところです。上記は正しいですか?ドキュメントは、私がReadableを拡張しなければならないことを暗示していますが、わかりません。

答えて

0

は、このクラスの新しいインスタンスを作成し、私が持っていたドキュメントやメールの添付ファイル

const tunnel = new Tunnel(); 
    transport.sendMail({ 
    to: [email protected], 
    subject: 'Info You Wanted', 
    text: 'The data you want is in pdf attachments', 
    attachments: [{ 
    filename: 'dummy.pdf', 
    content:tunnel 
    }] 
}); 
const doc = new PDFKit({size: 'A4', layout: 'landscape', info: info, margin: 30}); 
doc.pipe(tunnel); 
doc.text('Writing text to document'); 
doc.end(); 

に渡しstream.PassTrough

const PassThrough = require('stream').PassThrough; 
    class Tunnel extends PassThrough { 
    constructor() { 
     super(); 
    } 
    setHeader() { 
     //no op 
    } 
    } 

を拡張するクラスを作成します。ここではは、あなたがそれを行う方法です実際のpdf処理ソフトウェアがHTTPリクエストに応答していたため、ヘッダーとステータスが設定されているため、通常のPassThroughストリームにわずかな違いが生じます。

0

PDFDocumentインスタンスは読み込み可能です。 これらは自動的にどこにも保存されませんしかし、PDFメソッドの出力を書かれている別の書き込み可能なノードストリームに送るためにpipeメソッドを呼び出すことができます。ドキュメントが完成したら、endメソッドを呼び出して確定します。ファイルまたはHTTP応答にパイプする方法の例を次に示します。 PDFへ

doc.pipe fs.createWriteStream( '/パス/に/ file.pdf')#ライト doc.pipe RES#HTTPレスポンスPDFKitに見出さ

書き込みと出力方法バージョン0.5は、現在

を推奨されていません前に、あなたはより多くの情報のためにこのサイトを参照してください......幸運... http://pdfkit.org/docs/getting_started.html

+1

ご覧のとおり、私の質問はすでに 'doc.pipe(res)'を行っています。 (あなたのコーヒースクリプトのjavascript版)が、nodemailer添付ファイルのコンテキスト内ではどういう意味ですか? docをcontent:valueとして添付ファイル配列の最初のオブジェクトに入れますか? – akc42

+0

hi akc ...送信する前にドキュメントの文字列にデータを変換しようとしています... – PrabakarMarimuthu

+0

....のような情報をいくつか検索します。https://www.npmjs.com/package/to-csv – PrabakarMarimuthu

関連する問題