问题描述
我使用 puppeteer 从 html 生成 pdf。它在本地机器上按预期工作。但是在部署到 AWS lambda 时,我们发现它将超过 AWS 为 lambda 函数设置的 250MB 大小限制。然后我们了解了可用于在 AWS 中部署的 chrome-aws-lambda。生成 pdf 的代码在在线提供的多个文档中几乎完全相同。但是在部署时,我们总是得到一个空的 pdf。但是pdf文件也有大小。 我们如何解决这个空白的 pdf 问题?
PDF 生成过程所遵循的步骤。
npm 安装 chrome-aws-lambda
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 (将#修改为@)