我希望使用谷歌浏览器无头浏览器>打印到pdf'替换现有方式(使用iText)生成PDF的功能。
考虑到需要处理的并发呼叫数量未知,这是一个可行的解决方案吗?
无头浏览器的打印到pdf功能,用于生产企业解决方案以生成PDF /屏幕截图,还是主要用于测试和开发环境?
如果处理来自单个计算机的多个并发调用将是一个问题,那么基于AWS lambda的无服务器解决方案是否可以成为解决此问题的好方法,因为它具有可伸缩性和并行处理能力?
答案 0 :(得分:0)
我使用了lambda函数来创建PDF文件,并且工作正常。可扩展性和并行流程也可以正常运行,因为它是AWS lambda。 但是,当我创建可行的解决方案时,会遇到很多问题。
首先,我将AWS API Gateway用作lambda的触发器,并且API请求超时了30秒。这意味着时间有限。
我的第一个解决方案是使用“ chrome-aws-lambda”和“ puppeteer-core” nodeJS库。
如果说实话,这是一个很慢的解决方案。从体系结构方面来看,这非常痛苦。 用户界面->请求返回PDF-> lambda函数运行无头浏览器-> [无头chrome启动->打开某些页面->向后请求一些数据]->等待加载->创建快照->响应使用PDF
然后,我尝试了一些库,并停止使用“ dynamic-html-pdf”。该lib使用“ handlebars”模板和“ html-pdf” lib作为引擎。如果页面上没有动态数据(例如动态项列表或某些if语句),则只能使用“ html-pdf”。