如何使用 AWS Lambda 生成具有自定义字体的 PDF?



我有一个 AWS Lambda 函数,它使用具有自定义字体的html-pdf库生成 PDF。

起初,我从Google字体外部导入字体,但后来PDF的大小放大了十倍。

所以我尝试在本地导入我的字体src('file:///var/task/fonts/...ttf/woff2')但仍然没有运气。

最后,我尝试在主项目中创建fonts文件夹,然后添加了所有字体以及文件fonts.config

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>/var/task/fonts/</dir>
<cachedir>/tmp/fonts-cache/</cachedir>
<config></config>
</fontconfig>

并设置以下环境:

FONTCONFIG_PATH = /var/task/fonts

但仍然没有运气(我还没有安装 fontconfig,因为我不确定如何以及是否需要(。

我的运行时环境是 Node.js 8.1.0。

您可以将字体上传到 S3 存储桶,然后在执行期间将其下载到 lambda 的/tmp目录中。如果您的 lib 创建了.pkl文件,您应该首先将根目录更改为/tmp(不允许 lambda 写入默认根目录(。 以下 Python 代码将您的文件从 S3 存储桶中的/fonts目录下载到/tmp/fonts"本地"目录。

import os
import boto3
os.chdir('/tmp')
os.mkdir(os.path.join('/tmp/', 'fonts'))
s3 = boto3.resource('s3')
s3_client = boto3.client('s3')
my_bucket = s3.Bucket("bucket_name")
for file in my_bucket.objects.filter(Prefix="fonts/"):
filename = file.key
short_filename = filename.replace('fonts/','')
if(len(short_filename) > 0):
s3_client.download_file(
bucket,
filename,
"/tmp/fonts/" + short_filename,
)

相关内容

  • 没有找到相关文章

最新更新