[英]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.