如何在单个段落内的行之间添加空格与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 
+1

在发帖之前,我读了三段文章...那么,这就是我为了阅读文档而得到的结果。谢谢! – Arion 2011-04-18 23:36:10

添加导致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() 

结果 enter image description here