在一个页面上保留一组行而不将其推到页面限制之上

时间:2014-01-14 16:01:35

标签: xslt apache-fop

我一直在为XSL-FO(使用Apache-FOP)样式表应用一些修复来创建PDF,其中包括添加一些额外的行,表示数据何时更改为不同的集合。

我已将行插入正确的位置并显示确定,但不时地,这些“标题行”将出现在页面的底部。因此,为了便于阅读,我在keep-with-next="always"元素中添加了table-row,并且在我注意到其他问题之前一切正常。

当我在页面底部没有足够空间的情况下在行中包含keep-with-next="always"时,下一行会显示在同一页面上,这会导致它隐藏该页面的页脚。然后下一行继续下一页。

所以,我要问的是,是否有一种方法可以拥有一组行,当它们的组合高度大于剩余空间时,它会将整个批次移动到新页面上?我考虑过使用嵌套表,但我被其他人建议避免这样做(出于某种未知原因,但如果这是唯一的解决方案,请点击它们,我正在这样做)

我可以删除这个位,因为它不是宇宙的末端,在页面的底部有一个“标题行”,但是让它正常工作会很好,并且一如既往,它很好学习为什么某些东西不能按你想要的方式工作

2 个答案:

答案 0 :(得分:5)

如果您不希望分页显示在与下一行保持的行内,则需要在其子代上设置keep-together.within-page属性:

<fo:table-row keep-with-next.within-page="always">
    <fo:table-cell keep-together.within-page="always">
        row with keep-with-next text
        ...
    </fo:table-cell>
</fo:table-row>
<fo:table-row>
    <fo:table-cell>
        next row
    </fo:table-cell>
</fo:table-row>

keep-together

上没有table-cell
row with keep-with-next text
row with keep-with-next text
<!-- page break -->
row with keep-with-next text
row with keep-with-next text

next row

keep-together

table-cell
<!-- page break -->
row with keep-with-next text
row with keep-with-next text
row with keep-with-next text
row with keep-with-next text

next row

答案 1 :(得分:3)

我遇到了同样的问题,这就是我解决它的方法。

<fo:table-row keep-with-next.within-page="always">