我在两列中使用reportlab及其一个表单。第二列只是第一列的副本。
我使用Frame()函数创建两列,并使用Spacer()函数将原始表单与复制的表单分为两列。
我的预期结果是使第二列中的数据保持不变。但是我得到的结果是,当第一列中的数据变短时,第二列开始上移并移至第一列。
答案 0 :(得分:2)
如果我的问题正确无误,则问题在于您可以使用分隔符来控制内容在两列/帧中的视觉位置。这样,您就可以将它看作是分成两个的单个长列,同时还需要将其看作是两个独立的列(两个独立的帧)。
因此,如果在开始填充另一帧之前结束第一帧(使用FrameBreak()结束,并且仅使用垫片控制同一帧内的任何视觉设计,则您将获得更大的控制权。
您需要了解的工具是: FrameBreak(),如果您进行搜索,则会发现许多代码示例。
例如您用10行文本填充第1帧,然后插入FramBreak()并指示脚本开始填充第二列。
您应该知道的另一个工具是所使用的设置,例如BaseDocTemplate:
allowSplitting:如果设置为1,则可流动内容(例如,段落)可以跨框架或页面进行拆分。如果为0,则将内容强制放入同一帧。 (默认值:1,禁用为0)。