如何使用FPDF从AWS存储桶中下载图像以生成PDF?



我有一个像这样的FPDF对象:

import fpdf
pdf = FPDF()
#Cover page
pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(175, 10, 'TEST - report',0,1,'C')

我正试图直接使用AWS S3桶中的.png文件来生成PDF,如下所示:

pdf.image(bucket_folder_name + '/' + file_name + '.png')

不幸的是,我得到了错误:

[Errno 2] No such file or directory

有什么问题吗?

要使用S3桶中的文件,您需要首先下载它们—S3桶不像本地文件夹,您可以提供路径并使用文件。

首先使用download_file下载文件,然后将文件名传递给pdf.image(...)

download_file方法有以下参数:

s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')

像这样:

import boto3
s3 = boto3.client('s3')
...
filename_with_extension = file_name + '.png';
outputPath = '/tmp/' + filename_with_extension;
s3.download_file(bucket_folder_name, filename_with_extension, outputPath)
pdf.image(outputPath)

重要提示:你必须写入/tmp目录,因为这是AWS允许您写入(和读取)的唯一可用文件系统。

任何其他路径都将导致[Errno 13] Permission denied错误。

每个文档:

您可以为每个Lambda函数配置自己的临时存储空间,在512MB到10240mb之间,以1MB为单位增量。临时存储在每个函数的/tmp目录中。

相关内容

  • 没有找到相关文章

最新更新