在前一篇我们已经知道大概 ReportLab 的处理过程,下面我们进入如何输出简单的文档。如果你看到用户手册,你会发现我跳过了许多的东西。是的,因为我认为那些与我们的目标暂时没有关系,许多东西更基础,而且是侧重于如何使用绘制的方法来画东西,而不是如何将文档转变为 PDF 文件。
ReportLab 为了方便生成文档提供了一种叫PLATYPUS(Page Layout and Typography
Using Scripts)的一系列的模板类,它用于控制文档的布局,可以让我们不用关心具体的坐标,绘制命令,甚至分页的处理,而将注意力集中在布局与内容上。
下面是一个应该算是最简单的生成Hello, ReportLab的例子吧。
from reportlab.platypus import Paragraph, SimpleDocTemplate
from reportlab.lib.styles import getSampleStyleSheet
stylesheet=getSampleStyleSheet()
normalStyle = stylesheet['Normal']
story = []
story.append(Paragraph("Hello, ReportLab", normalStyle))
doc = SimpleDocTemplate(‘hello.pdf’)
doc.build(story)
代码要比上一个多几行,但理解并不困难。
第1行我们导入Paragraph和SimpleDocTemplate类。Paragraph是用于生成文本段落的。SimpleDocTemplate是文档布局模板。
第2行导入将要用在Paragraph中的样式。也就是说ReportLab已经为我们预先定义了一些样式,如标准,标题1,标题2,黑体等等,用于生成特殊效果。与Word中的样式有些象。
第3行是得到样式集。
第4行是得到标准样式,它将用在Paragraph的生成中。
第5行是生成一个空列表。这里叫story,在用户手册中你会看到这个单词。它将用来存储象段落这样的对象,其它的还可以是图片等。而这些东西是有顺序的,因此使用了list来保存。因此在用户手册中看到这个单词不要以为是什么特别的对象。
第6行生成我们期待的"Hello, ReportLab"段落,并且它的样式是普通。将生成的结果放在story中。
第7行创建SimpleDocTemplate对象,指定将要生成的文件名。
第8行执行文档模板的build方法最终生成文件。所以有文档模板类都有build方法。
从上面的例子可以看到通过文档模板及样式可以让我们方便的创建面向对象的应用,而不用再关心坐标、绘制命令等底层的东西,从而可以方便我们的文档生成。打开hello.pdf看一看效果吧。这回就象是真正的文档,"Hello, ReportLab"放在上面了。
转自: http://blog.donews.com/limodou/archive/2005/08/21/520122.aspx