我已经将lambda函数从nodejs8更新到nodejs12。
wkhtmltopdf 在 nodejs 8 上运行良好,但现在我收到此错误:
"wkhtmltopdf:加载共享库时出错:libXrender.so.1:无法打开共享对象文件:没有这样的文件或目录
我试图手动将库 libXrender 放入文件项目中,但它不起作用。
如果有人有关于如何在nodejs 12中的aws lambda上使wkhtmltopdf工作的解决方案,那就太好了。提前谢谢你。
我遇到了同样的问题。最终从Amazon Linux 2映像中提取了必要的库+字体,如下所示:
1( 运行并进入适用于 Amazon Linux 2 的 docker 容器:
docker run -it --rm amazonlinux:2.0.20191217.0
2( 在 docker 容器内安装必要的工具,并自动准备必要的依赖项(基于 64 位(:
mkdir -p /deps
yum install -y yum-utils rpmdevtools
yum install -y libXrender.x86_64 fontconfig.x86_64 freetype.x86_64 libXext.x86_64 libX11.x86_64 expat.x86_64 libxcb.x86_64 libXau.x86_64
yumdownloader libXrender.x86_64 fontconfig.x86_64 freetype.x86_64 libXext.x86_64 libX11.x86_64 expat.x86_64 libxcb.x86_64 libXau.x86_64
rpmdev-extract *rpm
cp /tmp/*/usr/lib64/* /deps
cp -R /tmp/*/etc/fonts /deps/
3( 打开一个新的术语窗口并导航到 PDF lambda 文件夹。使用docker ps
命令,找到容器 ID 并粘贴以下命令:
docker cp <CONTAINER_ID>:/deps/ . && mv deps/* . && rmdir deps
4(将<your_lambda_path>/deps/fonts/fonts.conf
的内容替换为此,或者提供自己的config+字体文件:
<fontconfig>
<dir>/var/task/fonts/</dir>
<cachedir>/tmp/fonts-cache/</cachedir>
<config></config>
</fontconfig>
5( 在处理程序中,您需要设置以下内容以查找字体:
process.env['FONTCONFIG_PATH'] = process.env['LAMBDA_TASK_ROOT'] + '/fonts'
完成此操作后,只需压缩包并像往常一样进行部署。
希望有帮助
检查下面的存储库,以便在 Lambda 下使用 wkhtmltopdf
https://github.com/lubos/aws-lambda-wkhtmltopdf
https://github.com/dimiro1/lambda-wkhtmltopdf
https://github.com/jpaolin/aws-lambda-s3-wkhtmltopdf