6

データベースから動的に取得され、ユーザーに提供される前にPDFに配置されるテキストのブロックがあります。テキストは、メモ帳の紙のように、裏打ちされた背景に配置されています。各背景行の間に1行のテキストだけが入るように、テキストの間隔を空けたいと思います。

次のコードを使用して、段落間に垂直方向の間隔を作成することができました(PDFの別の部分を生成するために使用されます)。

    style = getSampleStyleSheet()['Normal']
    style.fontName = 'Helvetica'
    style.spaceAfter = 15
    style.alignment = TA_JUSTIFY

    story = [Paragraph(choice.value,style) for choice in chain(context['question1'].itervalues(),context['question2'].itervalues())]
    generated_file = StringIO()
    frame1 = Frame(50,100,245,240, showBoundary=0)
    frame2 = Frame(320,100,245,240, showBoundary=0)
    page_template = PageTemplate(frames=[frame1,frame2])
    doc = BaseDocTemplate(generated_file,pageTemplates=[page_template])
    doc.build(story)

ただし、段落が1つしかないため、ここでは機能しません。

4

2 に答える 2

15

あなたが変えたいものがリードしていることはかなり確かです。第6章のユーザーマニュアルから。

ダブルスペースのテキストを取得するには、高い先頭を使用します。autoLeading(デフォルトは「off」)を「min」(指定よりも小さい場合でも観測された先頭を使用)または「max」(観測および指定されたものの大きい方を使用)に設定すると、行の先頭を次のように決定しようとします。ラインベース。これは、行に異なるフォントサイズなどが含まれている場合に役立つことがあります。

リーディングは第2章の前半で定義されています。

行間間隔(先頭)

1つの線が開始する点と次の線が開始する点の間の垂直オフセットは、先行オフセットと呼ばれます。

したがって、たとえば次のように、リーディングのさまざまな値を試してください。

style = getSampleStyleSheet()['Normal']
style.leading = 24
于 2011-04-18T23:30:23.047 に答える
0

ParagraphStyleにつながる追加

orden = ParagraphStyle('orden')
orden.leading = 14
orden.borderPadding = 10
orden.backColor=colors.gray
orden.fontSize = 14

PDFを生成する

buffer = BytesIO()
p = canvas.Canvas(buffer, pagesize=letter)

text = Paragraph("TEXT Nro 0001", orden)
text.wrapOn(p,500,10)
text.drawOn(p, 45, 200)


p.showPage()
p.save()
pdf = buffer.getvalue()
buffer.close()

結果 ここに画像の説明を入力してください

于 2016-02-24T16:58:08.860 に答える