💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

本文介绍了如何在Vercel或AWS Lambda上使用Puppeteer生成PDF。作者创建了一个Next.js应用来自动化发票生成,并解决了Puppeteer在无服务器环境中的挑战,包括托管Chromium二进制文件、优化超时设置和PDF生成流程。

🎯

关键要点

  • 本文介绍了如何在Vercel或AWS Lambda上使用Puppeteer生成PDF。
  • 作者创建了一个Next.js应用来自动化发票生成,解决了Puppeteer在无服务器环境中的挑战。
  • Puppeteer依赖Chrome来渲染页面,但其二进制文件过大,无法直接用于无服务器函数。
  • 作者使用了puppeteer-core和适合无服务器环境的Chromium版本@sparticuz/chromium-min。
  • 解决方案是将Chromium二进制文件托管在外部Blob存储中,并在运行时引用。
  • 在无服务器环境中,Puppeteer的加载时间较长,可能导致超时。
  • 作者通过重用浏览器实例和优化waitUntil参数来提高PDF生成效率。
  • 在Vercel上运行时,设置额外的HTTP头以避免生成登录页面的PDF。
  • 使用CSS确保PDF以打印友好的格式呈现,并去除边距。
  • 作者尝试通过Authorization头保护API端点,但在Vercel上存在不可靠的问题。
  • 希望本文能帮助其他人在无服务器环境中使用Puppeteer生成PDF。
➡️

继续阅读