Создание PDF с использованием chrome - aws -lambda - PullRequest
0 голосов
/ 06 марта 2020

У меня есть лямбда-функция в nodejs, которая выбирает шаблон руля из s3, генерирует HTML, конвертирует в PDF и загружает его в s3. После развертывания лямбды до AWS, когда я ее тестирую. Он выполняется без ошибок, но PDF или HTML не были сгенерированы.

try {

  const temp = result.Body.toString(); //.replace(/\\|\\n/g,'');

  console.log(temp);

  const template = hbs.compile(temp);
  const html = template(data);

  console.log(html);

  const executablePath = event.isOffline
    ? "./node_modules/puppeteer/.local-chromium/mac-674921/chrome-mac/Chromium.app/Contents/MacOS/Chromium"
    : await chromium.executablePath;

  let browser = null;

  browser = await chromium.puppeteer.launch({
    args: chromium.args,
    defaultViewport: chromium.defaultViewport,
    executablePath,
    headless: true
  });

  const page = await browser.newPage();

  page.setContent(html);

  const pdf = await page.pdf({
    format: "A4",
    printBackground: true,
    margin: { top: "1cm", right: "1cm", bottom: "1cm", left: "1cm" }
  });


  const output_filename = 'pdf-demo.pdf';

  const s3Params = {
    Bucket: Bucket_name + '/' + 'pdf',
    Key: `epiconnect/pdfs/${output_filename}`,
    Body: pdf,
    ContentType: "application/pdf",
    ServerSideEncryption: "AES256"
  };

  await s3.upload(s3Params, err => {
    if (err) {
      console.log("err", err);
      return callBack(null, { error });
    }
  });

} catch (err) {

  console.log(err);
  return context.fail(err);

}

1 Ответ

0 голосов
/ 06 марта 2020

Привет @ sepp2k / @Shazam, я думаю, что проблема в том, что вы используете await перед s3.upload, который не возвращает обещание, попробуйте изменить это

  await s3.upload(s3Params, err => {
    if (err) {
      console.log("err", err);
      return callBack(null, { error });
    }
  });

на обещание версия

  await s3.upload(s3Params).promise();

Thx!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...