如何使用 chrome-aws-lambda 在 AWS lambda 函数中从 html 生成 pdf?

问题描述

我使用 puppeteer 从 html 生成 pdf。它在本地机器上按预期工作。但是在部署到 AWS lambda 时,我们发现它将超过 AWS 为 lambda 函数设置的 250MB 大小限制。然后我们了解了可用于在 AWS 中部署的 chrome-aws-lambda。生成 pdf 的代码在在线提供的多个文档中几乎完全相同。但是在部署时,我们总是得到一个空的 pdf。但是pdf文件也有大小。 我们如何解决这个空白的 pdf 问题?

PDF 生成过程所遵循的步骤。

npm 安装 chrome-aws-lambda

用于生成pdf的代码

module.exports.generateReport = async (req,res,next)=>{
const browser = await chromium.puppeteer.launch({
            args: chromium.args,defaultviewport: chromium.defaultviewport,executablePath: await chromium.executablePath,headless: chromium.headless,});
const page = await browser.newPage();
const loaded = page.waitForNavigation({waitUntil:'load'});
await page.setContent('<h1>Hello World!</h1>');
await loaded;
const pdfFile =  await page.pdf({ format: "Letter"});
res.set({ 'Content-Type': 'application/pdf','Content-Length': pdfFile.length })
return res.send(pdfFile)
}

尝试的另一组代码

module.exports.generateReport = async (req,next)=>{
    const browser = await chromium.puppeteer.launch({
                args: chromium.args,});
    const page = await browser.newPage();
    await page.setContent('<h1>Hello World!</h1>',{ waitUntil: ['load','domcontentloaded','networkidle0'] });
    const pdfFile =  await page.pdf({ format: "Letter"});
    res.set({ 'Content-Type': 'application/pdf','Content-Length': pdfFile.length })
    return res.send(pdfFile)
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)