gpt4 book ai didi

django - 渲染从 SimpleDocTemplate 构建的 ReportLab pdf

转载 作者:行者123 更新时间:2023-12-04 01:38:47 25 4
gpt4 key购买 nike

我有一个 django 应用程序,它当前使用用户可以下载的 Canvas 生成 pdf。我创建了一个 StringIO 缓冲区,做一些事情然后发送调用 response.write。

# Set up response
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=menu-%s.pdf' % str(menu_id)
# buffer
buff = StringIO()

# Create the pdf object
p = canvas.Canvas(buff)

# Add some elements... then

p.showPage()
p.save()

# Get the pdf from the buffer and return the response
pdf = buff.getvalue()
buff.close()
response.write(pdf)

我现在想使用鸭嘴兽和 SimpleDocTemplate 构建我的 pdf 并编写了这个
# Set up response
response = HttpResponse(mimetype='application/pdf')
pdf_name = "menu-%s.pdf" % str(menu_id)
response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name

menu_pdf = SimpleDocTemplate(pdf_name, rightMargin=72,
leftMargin=72, topMargin=72, bottomMargin=18)

# container for pdf elements
elements = []

styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='centered', alignment=TA_CENTER))

# Add the content as before then...

menu_pdf.build(elements)
response.write(menu_pdf)
return response

但这不起作用,它会创建一个无法打开的坏 pdf。我认为这条线
response.write(menu_pdf)

是不正确的。

我如何呈现pdf?

最佳答案

你的错误实际上是一个非常简单的错误。这只是试图写错东西的问题。在您的代码中,menu_pdf不是 PDF,而是 SimpleDocTemplate , 并且 PDF 已存储在 pdf_name ,虽然在这里我怀疑 pdf_name是路径名而不是文件对象。要修复它,请更改您的代码以使用您在原始代码中所做的内存文件:

# Set up response
response = HttpResponse(mimetype='application/pdf')
pdf_name = "menu-%s.pdf" % str(menu_id)
response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name

buff = StringIO()

menu_pdf = SimpleDocTemplate(buff, rightMargin=72,
leftMargin=72, topMargin=72, bottomMargin=18)

# container for pdf elements
elements = []

styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='centered', alignment=TA_CENTER))

# Add the content as before then...

menu_pdf.build(elements)
response.write(buff.getvalue())
buff.close()
return response

我不确定文档中是否提到了使用文件对象而不是 Platypus 的路径,但是如果您深入研究代码,您会发现这是可能的。

关于django - 渲染从 SimpleDocTemplate 构建的 ReportLab pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068591/

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