【问题标题】:How do I convert HTML into a PDF or image in an AWS Lambda如何在 AWS Lambda 中将 HTML 转换为 PDF 或图像
【发布时间】:2019-07-04 09:59:03
【问题描述】:
很容易弄清楚如何使用 html-pdf 之类的库在 express 服务器上将 html 转换为图像/pdf。但是,我已经苦苦挣扎了好几个星期,试图弄清楚如何让我的本地工作代码在 AWS Lambda 中工作。问题是,我使用的库需要 phantomjs 才能运行,并且很难让 phantomjs 在 AWS lambda 中运行。您可以在这里看到我尝试过的内容:How do you install phantomjs on AWS lambda?
这个问题不一定与那场斗争有关。这个问题比较高级。我正在寻找一些采用 HTML 并将其转换为 PDF 或图像的代码。此代码不必必须使用 html-pdf 或 phantomjs。 我正在寻找将 html 转换为 pdf/image 并在 lambda 中工作的任何工作示例。它不必访问网页。我在字符串变量中有 HTML。
我正在寻找使用 nodejs 的答案。
【问题讨论】:
标签:
html
node.js
amazon-web-services
aws-lambda
【解决方案1】:
我已经使用https://github.com/wkhtmltopdf/wkhtmltopdf 库解决了完全相同的问题。有几个可用的 github 项目提供了一些额外的包装器来在 lambda 中运行 wkhtmltopdf,但我认为使用它们没有太大价值。这就是我所做的:
1) 使用Amazon linux 启动一个 docker 容器,Centos 也可以
2) 自己编译wkhtmltopdf或使用yum安装
3) 停止容器并复制wkhtmltopdf二进制
4) 创建一个具有以下结构的 zip 存档
wkhtmltopdf.zip
└ bin/wkhtmltopdf
5) 创建lambda layer 并上传之前创建的存档
6) wkhtmltopdf 将在 lambda $PATH 中可用
运行示例:
我正在使用 python,但在 nodejs 中不会有太大的不同,因为我们只是在执行一个命令
subprocess.run(['wkhtmltopdf', 'home.html', '/tmp/html.pdf'])