3

我希望使用 google chrome 无头浏览器的“打印到 pdf”功能来替换现有的方式(使用 iText)来生成 PDF。

考虑到需要处理的并发调用数量未知,这是一个可行的解决方案吗?

无头浏览器的打印到 pdf 功能是用于企业解决方案的生产以生成 PDF/屏幕截图,还是主要用于测试和开发环境?

如果从单台机器处理多个并发调用会成为一个问题,那么基于 AWS lambda 的无服务器解决方案是否是解决此问题的好方法,因为它具有可扩展性和执行并行处理的能力?

4

1 回答 1

0

我使用 lambda 函数来创建 PDF 文件,它工作正常。可扩展性和并行过程也适用,因为它是 AWS lambdas。但是,当我创建工作解决方案时,遇到了很多问题。

首先,我使用 AWS API Gateway 作为 lambda 的触发器,我得到了 30 秒的 API 请求超时。这意味着时间是有限的。

我的第一个解决方案是使用“chrome-aws-lambda”和“puppeteer-core”nodeJS 库。

老实说,非常缓慢的解决方案。从架构方面来说非常痛苦。用户 UI -> 请求返回 PDF -> lambda 函数运行无头浏览器 -> [无头 chrome 开始 -> 打开一些页面 -> 请求返回一些数据] -> 等待加载 -> 创建快照 -> 响应带PDF

然后我尝试了一些库并停在“dynamic-html-pdf”上。这个库使用“handlebars”模板和“html-pdf”库作为引擎。如果页面上没有一些动态数据(fe 动态项目列表或一些 if 语句) - 您只能使用“html-pdf”。

于 2020-04-25T19:49:43.307 回答