问题描述
||
我有一段文本是从数据库中动态提取的,并在提供给用户之前以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,showBoundary=0)
page_template = PageTemplate(frames=[frame1,frame2])
doc = BaseDocTemplate(generated_file,pageTemplates=[page_template])
doc.build(story)
但是,这在这里不起作用,因为我只有一个很大的段落。解决方法
可以肯定,您要更改的内容是领先的。摘自第6章的用户手册。
要获取双倍间距的文本,请使用高
领导。如果您设定
autoLeading(默认\“ off \”)为
\“ min \”(即使
小于指定的大小)或\“ max \”(使用
观察和指定的较大者)
然后尝试确定
逐行领导。
如果这些行
包含不同的字体大小等。
领导在第2章中已定义:
行间间距(领先)
点之间的垂直偏移
在哪一行开始,哪里
下次开始称为领导
偏移量。
因此,请尝试使用不同的Leading值,例如:
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()
结果