XSL保持在一起并且分页内部不起作用

时间:2015-06-12 19:50:24

标签: xml xslt xsl-fo page-break page-break-inside

我已经尝试了以下建议但没有一个有效,我的<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,以防有限制。

1 个答案:

答案 0 :(得分:0)

我认为你应该联系FO.NET人员。使用RenderX XEP和Apache FOP测试此示例可产生3页输出。在10.36,你的块的整个文本适合页面,在10.37,它没有。在这两种产品中,块中的所有内容都将移至下一页。请注意,唯一需要的标签是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供应商,保持很难正确地做在代码中。