FOP xslt 中 region-before 和 region-body 之间的相对 space

Relative space between region-before and region-body in FOP xslt

我正在尝试在 region-before 和 region-body 之间获得 10mm space。 但是我无法相对于 regin-before.

的大小得到它

边界应该是这样的。使用 single-lined 'Bemerkung' 它可以工作。但是一旦它变成双倍或 three-lined,body 就不会被压低,而是保持在相同的位置,如下所示:

我的 layout-master-set 看起来像这样:

<fo:layout-master-set>
    <fo:simple-page-master master-name="Stueckliste"
        margin="{$Innenraender}" page-height="{$SeitenhoeheA4}" page-width="{$SeitenbreiteA4}">
        <fo:region-body region-name="xsl-region-body"
            margin="45mm 0mm 17mm 0mm" />
        <fo:region-before extent="80mm" display-align="before"
            region-name="xsl-region-before" />
        <fo:region-after region-name="xsl-region-after"
            extent="50mm" display-align="after" margin="30mm 0mm 40mm 0mm" />
    </fo:simple-page-master>
</fo:layout-master-set>

region-before周边:

<fo:static-content flow-name="xsl-region-before">
  ...
</fo:static-content>

region-body周边:

<fo:flow flow-name="xsl-region-body">
   ...
</fo:flow>

哪里错了?

没有错误。在 XSL FO 中,区域的高度是固定的。它不会根据超过(或小于)"extent" 的内容扩展(或收缩)。如果您需要 header 区域在后续页面上重复,那么您将需要做一些事情(就像您建议的那样计算字符)来确定一些预测的高度并在生成 XSL FO 的 XSL 中设置该高度。或者,您可以设置一组包含各种 "extent" 的页面模板,然后根据字符数从中进行选择。

如果 header 不会在后续页面上重复(比如它是第一页,或者您只有一页),那么您可以将部分或全部内容移动到 body 并且没有 header.