【发布时间】:2019-01-15 11:26:45
【问题描述】:
我正在使用reportlab 制作一个表格,它分为两列。第二列只是第一列的副本。
我使用 Frame() 函数创建两列,并使用 Spacer() 函数将原始表单与复制的表单分隔为两列。
我的预期结果是使第二列中的数据保持不变。但是我得到的结果是,当第一列中的数据变短时,第二列开始向上移动并移动到第一列。
【问题讨论】:
我正在使用reportlab 制作一个表格,它分为两列。第二列只是第一列的副本。
我使用 Frame() 函数创建两列,并使用 Spacer() 函数将原始表单与复制的表单分隔为两列。
我的预期结果是使第二列中的数据保持不变。但是我得到的结果是,当第一列中的数据变短时,第二列开始向上移动并移动到第一列。
【问题讨论】:
如果我的问题是正确的,那么问题是您使用间隔来控制内容在两列/框架中的视觉位置。这样,您将其视为一分为二的单个长列,同时您需要将其视为两个单独的列(两个单独的框架)。
因此,如果您结束第一帧(在开始填充另一帧之前使用 FrameBreak() 并且仅使用分隔符来控制同一帧内的任何视觉设计,您将获得更大的控制权。
您需要了解的工具有: FrameBreak(),搜索一下会发现很多代码示例。
例如你用 10 行文本填充第 1 帧,然后插入一个 FramBreak() 并指示脚本开始填充第二列。
您应该注意的另一个工具是使用的设置,例如 BaseDocTemplate:
allowSplitting:如果设置为 1,flowables(例如,段落)可以跨框架或页面拆分。如果为 0,则强制内容进入同一帧。 (默认值:1,禁用为 0)。
【讨论】: