1

現在、私はPythonで作成しようPDF documentsとしています。reportlab私の PDF の各ページには、次のような複数の質問があります。

ここに画像の説明を入力

周りを見回した後、 と を使用してこのフォーマットを実現しようとしましPlatypus SimpleDocTemplatePlatypus 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

質問と回答を 1 つの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 に答える