gpt4 book ai didi

node.js - 如何使用 AWS Lambda 生成带有自定义字体的 PDF?

转载 作者:行者123 更新时间:2023-12-05 06:22:08 36 4
gpt4 key购买 nike

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

起初,我从 Google Fonts 外部导入我的字体,但后来 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,
)

关于node.js - 如何使用 AWS Lambda 生成带有自定义字体的 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369815/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com