0

我尝试了以下建议,但都没有奏效,我<fo:block>一直在两个内部块之间分裂。

<fo:block keep-with-next="always" page-break-inside="avoid">
  <fo:block keep-together="always">
    Block # 1, a header
  </fo:block>

  <fo:block keep-together="always">
    Block # 2, a bunch of text
  </fo:block>
</fo:block>

如何在页面上将两个内部块保持在一起?我正在使用 FO.NET,以防万一。

4

1 回答 1

0

我认为您应该联系 FO.NET 人员。使用 RenderX XEP 和 Apache FOP 测试此示例会产生 3 页输出。在 10.36in 处,您的块的整个文本适合页面,而在 10.37in 则不适合。在这两种产品中,您的区块中的所有内容都将移至下一页。请注意,唯一需要的标签是 page-break-inside="avoid",仅此而已。

        <fo:flow flow-name="xsl-region-body">
            <fo:block>Space</fo:block>
            <fo:block space-before="10.36in">I Generate One Page</fo:block>
            <fo:block page-break-inside="avoid">
                <fo:block >
                    Block # 1, a header
                </fo:block>
                <fo:block>
                    Block # 2, a bunch of text
                </fo:block>
            </fo:block>
            <fo:block break-before="page">I Generate Two Pages</fo:block>
            <fo:block space-before="10.37in">Space</fo:block>
            <fo:block page-break-inside="avoid">
                <fo:block >
                    Block # 1, a header
                </fo:block>
                <fo:block>
                    Block # 2, a bunch of text
                </fo:block>
            </fo:block>
        </fo:flow>

在查看 FO.NET 网站时,它自 2009 年以来一直没有更新。我没有看到任何关于他们(缺乏)对 keep 的支持,但来自另一个 XSL FO 供应商,keep 很难在代码中正确执行。

于 2015-06-12T22:51:53.560 回答