如何在 <fo:table/> 中添加额外的空行以填充区域主体

How to add extra empty row to fill region-body in <fo:table/>

在使用apache FOP 生成文档时,我想添加额外的空行 来填充body-region。如下图第二张,table 2的内容始终在同一页(使用keep-together.within-page="always"属性),第1页的spacetable 2 来说不够用,所以这个 table 在 第 2 页 上呈现。因此,在 pgae 1 中,我想在 body-region 的末尾插入一个空行,并在 第 2 页 - 最后一页 , table 1table 2 之前添加空行的常量数(本例中为 13)。我该怎么做?

Pic1:table 1 并添加了空行

Pic2: table 1 空行和 table 2

一般来说,您不能告诉 table 生成足够的行来填充 space。格式化程序对其输入中的内容进行格式化,并且不会添加不在输入中的 table 行。如果您使用的是来自打印和页面布局社区组的 XSLT 扩展,那么您可以计算出实际行的大小,然后还可以生成提供所需效果所需的空行,但这是唯一的方法。

伪造您想要的东西的常用方法是使用页面区域之一的背景图像作为 table 单元格边框。如果您可以在空行上没有水平边框,那么图像可能只是列边框,而实际行的 table 单元格(或 fo:table-row)可以生成它们自己的水平边框。

如果您需要背景图像中空行的水平边框,则实际行必须有白色背景以阻止背景图像的水平边框可见。您可能需要注意实际行始终是背景图像中空行高度的整数倍,这样您就不会在实际行之后立即出现额外高或短的行。

您可以将 'table 2' 放在页面底部,方法是将其浮动到底部(FOP 无法做到 IIRC)或在 fo:static-content 中包含 'table 2'对于最后一页的 fo:region-after。这需要带有 'table 2' 的页面是其页面序列的最后一页,并且您设置一个 fo:page-sequence-masterpage-position="last" 选择正确的 fo:simple-page-master 以便 fo:static-content 包含 'table 2' 用于最后一页。