OpenLP版本的ReportLab的RML是否支持框架?

时间:2012-10-02 22:33:52

标签: openerp reportlab page-layout

我想在OpenERP的某些报告中添加侧边栏或标题。 ReportLab user manual (PDF)描述了<frame><nextFrame>代码。他们是否完全支持OpenERP?我已经有了一些工作要做,但是一个框架只是流入下一个框架,因此一个占用多个页面的报告最终会出现重叠文本。

1 个答案:

答案 0 :(得分:1)

在代码中挖掘了一堆后,我在OpenERP 5.0中使用了框架。我必须找到的关键功能是帧定义的last="true"属性。这意味着框架应该假设它是页面上的最后一帧。任何溢出它的文本都将流向新页面的第一帧,而不是当前页面的下一帧。我最终在所有框架上都设置了它。要查看包含框架的示例,请参阅我们的balance sheet report

中的一些代码段
<template 
    pageSize="(8.5in,11in)" 
    title="Test" 
    author="Zaber Technologies Inc." 
    allowSplitting="20">
  <pageTemplate id="first">
    <frame 
        id="first" 
        x1="1.3cm" 
        y1="0.2cm" 
        height="27.5cm" 
        width="14.0cm" 
        last="true"/>
    <frame 
        id="upper_right" 
        x1="14.1cm" 
        y1="21.53cm" 
        height="5.2cm" 
        width="5.0cm" 
        last="true"/>
  </pageTemplate>
</template>

此部分指定您的页面布局。默认情况下,文本将从列表的第一帧开始。 y1是距底部页面的距离。您可以在两个位置指定页面模板:在报表本身内,或在公司配置中定义的标题内。如果您使用标题,则报告的第一个页面模板将替换为标题的页面模板,因此报告的模板可以是pageTemplate标记,其中包含空frame标记。公司标题只能使用一个页面模板,但每个报表可以定义多个页面模板。

如果您想将某些内容放入其他框架中,请使用setNextFramenextFrame

<setNextFrame name="upper_right"/>
<nextFrame/>

您不必按顺序使用框架。您可以切换到列表中的较早帧,但不会启动新页面。

有关更改标题的详细信息,请参阅documentationuser-defined headers上的问题。