簡體   English   中英

如何使用Reportlab在單個段落中的行之間添加空格

[英]How to add space between lines within a single paragraph with Reportlab

我有一個從數據庫中動態提取的文本塊,在提供給用戶之前放在PDF中。 文本被放置在帶襯里的背景上,就像記事本紙一樣。 我想將文本空間化,以便每個背景線之間只有一行文本。

我能夠使用以下代碼在段落之間創建垂直間距(用於生成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)

但是,這在這里不起作用,因為我只有一個大的段落。

很確定你想要改變的是領先的。 從第6章的用戶手冊。

要獲得雙倍行距文本,請使用高導程。 如果將autoLeading(默認為“off”)設置為“min”(使用觀察到的前導,即使小於指定值)或“max”(使用觀察到的和指定的較大者),則嘗試通過以下方式確定行中的前導行基礎。 如果行包含不同的字體大小等,這可能很有用。

前導在第2章中定義:

行間距(領先)

一行開始的點與下一行開始的點之間的垂直偏移稱為前導偏移。

因此,嘗試不同的領導值,例如:

style = getSampleStyleSheet()['Normal']
style.leading = 24

添加前導到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()

結果 在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM