2014-09-17 14 views
5

Tôi đang sử dụng PDFKit và NodeJS để tự động tạo tài liệu PDF và tôi muốn đính kèm tài liệu đó vào email. Tại thời điểm này tôi đang sử dụng Mandril-API thông qua NPM.nodejs pdfkit Đính kèm Tự động tạo PDF vào Email (Mandrill-API)

tôi có thể tạo ra các file PDF mà không vấn đề và hiển thị nó trong trình duyệt qua:

doc.pipe (res);

Tôi có thể gửi email không có vấn đề, nhưng tôi đã thất bại thảm hại khi nhận được nội dung PDF phù hợp. Tôi khá chắc chắn rằng tôi 99% con đường ở đó - nhưng tôi đang thiếu một cái gì đó. Tôi đã thực hiện một tấn đọc và thử nghiệm bằng cách sử dụng Google/StackOverflow vv nhưng tôi bị mắc kẹt.

Tôi nhận được nội dung mà khi tôi làm một decode base64 tôi nhận được:

% PDF-1,3% 7 0 obj < </Predictor 15

tôi đã được quản lý để có được file PDF đính kèm của tôi để có kích thước hợp lệ của 445KB nhưng đây là nội dung của email:

--_ av-Ti-H6i8tBBHL4BgoXnyC2Q Content-type: application/pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename = "mytestPDF.pdf"

PDF1370obj/Predictor15/Colors1/BitsPerComponent8/Columns100e ndobj60obj/Loại/XObject/Loại con/hình ảnh/BitsPerComponent8/Widt H100/Height19/Lọc/FlateDecode/DecodeParms70R/vùng màu/I ndexed/DeviceRGB25580R/Length1751streamxdSSNEhGIRTRkWbY/nHÀO MJln7t + vv89ylF111PlYNB9Nm6e9DENsd9FxLFUbOjrgt + ErRgWtj9vPCTBH oohMHl9oZ7IdpC/hxusjTHFFMcxhwIxPlbNorOB + bH8exrrA1DUnzKzq/UXI xT456nxtB59fQNiIrBT2apETJZieZvltpeThrObiZ4ydtY0koKJ2Epb940A1 iXyehONQVXiZr8jRP/NJ3bmjHA0sygAou4Q =

Mặc dù tôi đã rối tung trong nhiều giờ về điều này, linh cảm nhất của tôi là tôi có lỗi ngắt dòng/dòng mới trong nội dung PDF của mình. Cách tôi nhận được nội dung PDF của tôi là tạo ra một mảng được gọi là bộ đệm, sau đó: doc.on ('data', buffers.push.bind (bộ đệm));

Tôi giả sử rằng tôi cần phải thêm/n hoặc/r ... nhưng tôi đã làm việc với NodeJS và AngularJS trong một tháng hoặc lâu hơn và tôi biết hầu hết mọi thứ tôi làm sai là vì tôi là quá phức tạp vấn đề ... vì vậy tôi quay sang bạn folks và hy vọng rằng có một phương pháp đơn giản để đính kèm các nội dung từ PDFDocument mới tôi tạo ra với PDFKit đến một email bằng cách sử dụng NodeJS.

Cảm ơn bạn trước ... hãy tha thứ cho sự rên rỉ của tôi, nhưng tôi đã bắt đầu khoảng 8 giờ trước (bây giờ là 3:25 sáng). :)

Trả lời

9

Gần đây, tôi đã gặp sự cố tương tự với việc đăng một tệp đính kèm pdf email lên mandrill thông qua node.js nhưng được quản lý để giải quyết nó.

Dưới đây là những gì tôi đã làm:

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); 
     }); 
    }); 

Tôi hy vọng điều này sẽ giúp. Ping nếu bạn cần thêm trợ giúp =)

+0

Cảm ơn bạn đã có mraxus, đây chính xác là những gì tôi cần. Tôi đánh giá cao sự trợ giúp của bạn !! – user2348688

+1

Bạn đang rất hoan nghênh.Rất vui khi cuộc đấu tranh của tôi cũng có thể giúp bạn =) – mraxus

+0

Bất kỳ ý tưởng nào về biến 'Buffer' và' pdfBuffer' đó là gì? – 2dvisio

Các vấn đề liên quan