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
我正在使用 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