Загрузить буфер pdfmake на s3 - PullRequest
       9

Загрузить буфер pdfmake на s3

0 голосов
/ 17 сентября 2018

Как я могу загрузить pdf, созданный мной в pdfmake, на s3?

Когда я загружаю свой PDF в S3, используя приведенный ниже код, я получаю файл, созданный, но когда я открываю файл, это пустой PDF. Я знаю, что мое определение документа создает правильный pdf, поскольку я могу вывести его на консоль и проверить его на сайте pdfmake.

    pdfMake.createPdf(dd).getBuffer((buffer) => {
      var s3 = new AWS.S3()

      s3.putObject({
            Bucket: s3UserFilesBucket,
            Key: 'filename.pdf',
            Body: buffer.toString('binary')
      }, function (resp) {

      })
    })

Когда я открываю файл, созданный в s3 в notepad ++, он «выглядит» как настоящий pdf. То есть начинается с

% PDF-1,3

и имеет множество специальных символов.

Если я скопирую определение документа на площадку pdfmake и сохраню pdf, а затем снова просмотрю его в notepad ++, оно будет похоже на то, которое я сохранил в s3, читаемый текст будет таким же, но блоки специальных символов будут другими

1 Ответ

0 голосов
/ 23 апреля 2019

Используйте буфер и затем передайте тот же буфер в качестве аргумента в функцию AWS s3.putObject. Следующий код загрузит правильное содержимое файла PDF (созданного pdfmake) в корзину S3.

const pdfMake = printer.createPdfKitDocument(dd);

let chunks = [];

pdfMake.on("data", chunk => {
  chunks.push(chunk);
});

pdfMake.on("end", () => {
  const result = Buffer.concat(chunks);
  var s3 = new AWS.S3();

  s3.putObject(
    {
      Bucket: s3UserFilesBucket,
      Key: "filename.pdf",
      Body: result
    },
    function(resp) {}
  );
});

pdfMake.end();
...