我需要使用reportlab将长字符串打印成pdf。代码如下。问题是,代码只要是一个页面就可以工作,但是当内容太长并且需要至少2个页面时,longString变量不会打印到pdf中。如果字符串太长,我该怎么做才能添加换行符。
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
# Create the PDF object, using the response object as its "file."
c = canvas.Canvas(response)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
longString= ""
styles = getSampleStyleSheet()
styleN = styles['Normal']
styleH = styles['Heading1']
story = []
story.append(Paragraph("This is a Heading",styleH))
story.append(Paragraph(longString, styleN))
f = Frame(inch, inch, 7*inch, 10*inch, showBoundary=0)
f.addFromList(story,c)
c.showPage()
c.save()
return response
答案 0 :(得分:0)
这不起作用的原因是您使用canvas
来构建文档。为了让platypus添加新页面,您需要使用文档模板,例如doc = BaseDocTemplate(pdf_file)
。然后使用doc.build(story)
来构建您的pdf。
这应该可以解决您的问题,因为我正在尝试使用手机上的stackoverflow应用程序发布此答案我无法给您更正的代码,但如果您遇到问题我很乐意这样做。