如何在单个段落内的行之间添加空格与Reportlab
问题描述:
我有一段文本从数据库中动态提取,并在提供给用户之前放置在PDF中。文本被放置在衬里背景上,很像记事本纸。我想要将文本间隔开,以便每条背景线之间只有一行文本。如何在单个段落内的行之间添加空格与Reportlab
我能够使用下面的代码来创建段落之间的垂直间距(用于生成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(默认为“关”),以 “分钟”(使用观察领先即使 小于指定)或“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()
在发帖之前,我读了三段文章...那么,这就是我为了阅读文档而得到的结果。谢谢! – Arion 2011-04-18 23:36:10