5

PDFKit と NodeJS を使用して動的に PDF ドキュメントを生成しています。このドキュメントを電子メールに添付したいと思います。現時点では、NPM 経由で Mandril-API を使用しています。

問題なく PDF を生成し、次の方法でブラウザに表示できます。

doc.pipe( レス );

問題なく電子メールを送信できますが、適切な PDF コンテンツを取得するのに惨めに失敗しました。私はそこに 99% 到達したと確信していますが、何かが欠けています。Google/StackOverflow などを使用して大量の読み取りとテストを行いましたが、行き詰まっています。

base64 デコードを実行すると、次のようなコンテンツが得られます。

%PDF-1.3 % 7 0 オブジェクト << /Predictor 15

PDF 添付ファイルの有効なサイズを 445 KB にすることができましたが、これは電子メールの内容です。

--_av-Ti-H6i8tBBHL4BgoXnyC2Q Content-Type: application/pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; ファイル名="mytestPDF.pdf"

PDF1370obj/Predictor15/Colors1/BitsPerComponent8/Columns100e ndobj60obj/Type/XObject/Subtype/Image/BitsPerComponent8/Widt h100/Height19/Filter/FlateDecode/DecodeParms70R/ColorSpace/I ndexed/DeviceRGB25580R/Length1751streamxdSSNEhGIRTRkWbY/nHaO MJln7t+vv89ylF111PlYNB9Nm6e9DENsd9FxLFUbOjrgt+ErRgWtj9vPCTBH oohMHl9oZ7IdpC/hxusjTHFFMcxhwIxPlbNorOB +bH8exrrA1DUnzKzq/UXI xT456nxtB59fQNiIrBT2apETJZieZvltpeThrObiZ4ydtY0koKJ2Epb940A1 iXyehONQVXiZr8jRP/NJ3bmjHA0sygAou4Q=

私はこれについて何時間もいじりましたが、PDF コンテンツに改行/改行エラーがあると思います。私が PDF コンテンツを取得する方法は、buffers という配列を作成することです。

/n や /r などを追加する必要があると思います...しかし、私は NodeJS と AngularJS を 1 か月ほど使用してきました。問題を複雑にしています...だから私は皆さんに目を向け、PDFKitで作成した新しいPDFDocumentのコンテンツをNodeJSを使用して電子メールに添付する簡単な方法があることを願っています.

よろしくお願いします...私のとりとめのないことを許してください、しかし、私は約8時間前にこれを始めました(現在、私の時間は午前3時25分です)。:)

4

1 に答える 1

10

私は最近、node.jsを介してmandrillに電子メールのpdf添付ファイルを投稿することで同じ問題を抱えていましたが、なんとか解決しました。

これが私がしたことです:

    generatePdf(inputData, function (err, doc) {
        if (err) return callback(err);

        var bufferChunks = [];

        doc.on('readable', function() {
            // Store buffer chunk to array
            bufferChunks.push(doc.read());
        });
        doc.on('end', function() {

            var pdfBuffer = Buffer.concat(bufferChunks),
                pdfBase64String = pdfBuffer.toString('base64');

            // This string is perfectly ok to use as an attachment to the mandrillAPI
            sendMandrillEmailWithAttachment(pdfBase64String);
        });
    });

これが役立つことを願っています。追加のヘルプが必要な場合は Ping =)

于 2014-09-24T12:58:10.270 に答える