Base64 到 Pdf 导出问题 AWS Lambda

Base64 to Pdf export issue AWS Lambda

我正在使用 AWS Lambda Puppeteer Nodejs 包创建 pdf 文档。

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

var pdf_base64 = await pdf.toString('base64');

const response = {
 headers: {
   'Content-Type': 'application/pdf',
   'Content-Disposition': 'attachment;filename=downloaded.pdf'
  },
 statusCode: 200,
 body: pdf_base64,
 isBase64Encoded: true
}

正在下载 Pdf,但似乎已损坏或未正确编码。 打开 chrome 时显示 Failed to load PDF document.

但是,如果我删除 headers 并导出 base 64 并使用任何在线服务将其保存为 pdf,则会生成并运行正确的 pdf。

即使我使用 text-editor 打开下载的 pdf 并使用任何在线工具从 base64 复制 base64 内容和 re-generated pdf,它也能正常工作。

返回时可能是什么问题。

我是无服务器方面的新手,所以我无法真正解释它是如何工作的。但是我和你有同样的问题,我在 serverless.yml 上添加了这个,现在可以了:

plugins:
  - serverless-offline
  - serverless-apigw-binary

custom:
  apigwBinary:
    types:          
      - 'application/pdf'

对我有帮助的资源:https://github.com/maciejtreder/serverless-apigw-binary#readme