1

目前我正在尝试PDF documentsreportlabpython 中创建。在我的 PDF 的每一页上,都会有多个这样的问题:

在此处输入图像描述

环顾四周后,我尝试使用Platypus SimpleDocTemplateand来实现这种格式Platypus Paragraph。像这样(仅供参考 - 这不是完整的代码,但我认为这会给你一个粗略的想法)

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch

doc = SimpleDocTemplate('myfile.pdf')
Story = [Spacer(1,1.65*inch)]
style = styles['Normal']

quetsionno = Paragraph('Questoin no goes here',style)
myquestion = Paragraph('my question goes here',style)
myanswer1 = Paragraph('my answer1 goes here',style)
myanswer2 = Paragraph('my answer2 goes here',style)
myanswer3 = Paragraph('my answer3 goes here',style)

Story.append(quetsionno)     
Story.append(myquestion)
Story.append(myanswer1)
Story.append(myanswer2)
Story.append(myanswer3)
Story.append(Spacer(1,0.2*inch))

doc.build(Story)

它以我想要的方式创建问题,但是每当问题到达页面末尾时,它就会拆分问题和答案。像这样:

在此处输入图像描述

我不希望这种情况发生,所以根据这个 SO answer,我尝试使用paragraph.keepWithNext = True但它没有任何区别。

有什么方法可以将我的问题+答案放在同一页面中(如果空间不足)?

4

1 回答 1

2

KeepTogether在一个实例中将您的问题和答案放在一起:

question = Paragraph('What color is the sky?', style)
answer1 = Paragraph('Red', style)
answer2 = Paragraph('Green', style)
answer3 = Paragraph('Blue', style)

Story.append(KeepTogether([question, answer1, answer2, answer3]))

ReportLab 将尝试将列表中的所有内容保持在同一页面上。

于 2013-11-09T03:57:19.573 回答