如何在不将PyFPDF数据导出为PDF的情况下将其用作PDF?

时间:2019-12-08 03:00:15

标签: python django pdf pyfpdf

当用户使用我的自定义构建的Django应用程序注册时,我正在使用PyFPDF自动创建自定义PDF文档。 PDF包含有关该人注册的信息。对于每个注册的人,我不想将其pdf另存为单独的pdf-我想在格式化后立即邮寄其PDF。

pdf = FPDF()
pdf.add_page()
pdf.image(file_path, 0, 0, 210)
pdf.set_text_color(1, 164, 206)
pdf.set_font("helvetica", size=26)
pdf.ln(142)
pdf.cell(0, 0, txt=name, ln=4, align="C")

这是我目前要格式化PDF的格式,其中name是从每个用户注册中获取的值。

这是紧随其后的事情,我想替换一下:

val = uuid.uuid4().hex
pdf.output(val+".pdf")

现在,我正在导出每个具有唯一文件名的PDF,然后将其发送到每个用户的电子邮件中。

我希望在发送每封电子邮件时直接使用pdf变量,如下所示:

finalEmail = EmailMessage(
    subject,
    plain_message,
    from_email,
    [email]
)
finalEmail.attach("Registration.pdf", pdf)
finalEmail.send()

但是,Django仍然不接受此作为有效的附件类型,因为它仍然是FPDF变量。

  

预期的类似字节的对象,而不是FPDF

我将如何处理?

1 个答案:

答案 0 :(得分:1)

documentation中,您可以看到参数S将该参数作为字节字符串

content = pdf.output(val+".pdf", 'S')

现在您可以使用content在电子邮件中创建附件。