我在最后一页的底部有一份包含一些内容(包含一个或多个地址的表格)的文档。 到目前为止,该表是标准大小的,所以我可以将表格插入页脚并将该页脚附加到最后一页:
<fo:page-sequence-master master-name="leaflet">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference page-position="first" master-reference="page_first_leaflet"/>
<fo:conditional-page-master-reference page-position="last" master-reference="page_last_leaflet"/>
<fo:conditional-page-master-reference master-reference="page_even_2" odd-or-even="even"/>
<fo:conditional-page-master-reference master-reference="page_odd_2_leaflet" odd-or-even="odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
当表具有可预测的大小时,这很有效:我设置了我的最后一页页脚的大小一次,我就完成了。
但是现在有一个要求使表格大小可变(5到15厘米之间)。如果我将页脚设置为15厘米,我会浪费很多空间。所以我想动态设置页脚大小。
我没有办法从XML文档中读取表格高度:默认情况下,单元格高度设置为0,这意味着&#34;使单元格足够大以使内容适合&#34;。所以我不能再将这张桌子放在页脚中了。
我的下一个想法是将桌子插入身体区域的末端。 这可以使用脚注构造来完成。当我将脚注放在文档内容的末尾时,将表放在与文档中最后一个文本相同的页面上。
<fo:flow flow-name="body">
<xsl:apply-templates/><!--normal chapter content is placed here-->
<fo:block>
<fo:footnote><fo:inline color="white">1</fo:inline><!--footnote number is not visible-->
<fo:footnote-body>
<fo:block>
<fo:table>
<fo:table-column column-width="20mm" column-number="1"/>
<fo:table-column column-width="200mm" column-number="2"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<fo:block>
<xsl:apply-templates select="table[1]"/><!--table that contains the addresses-->
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:footnote-body>
</fo:footnote>
</fo:block>
</fo:flow>
不幸的是,页面计数必须是均匀的,因此有时在文档内容结束后会添加一个空页面:
<xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
因此,如果我的内容长达3页,则地址表最终会显示在第3页的底部。但我需要它在第4页。此方法仅在内容以偶数页结束且表适合时才有效在剩下的空间里。
我可以使用其他方法在文档最后一页的底部获取可变大小的块吗?
答案 0 :(得分:1)
你可以在最后一个块之前强制偶数页分页(脚注包含表&#34;页脚&#34;)
<fo:block break-before="even-page">
<fo:footnote><fo:inline color="white">1</fo:inline><!--footnote number is not visible-->
<fo:footnote-body>
<fo:block>
<fo:table>
<fo:table-column column-width="20mm" column-number="1"/>
<fo:table-column column-width="200mm" column-number="2"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<fo:block>
this is the footnote table
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:footnote-body>
</fo:footnote>
</fo:block>
顺便说一句,我认为您可以安全地让fo:inline
的{{1}}孩子完全为空,这样您的输出就不会包含不需要的文字,即使不可见,仍然是可搜索的和可选;如果你的格式化程序抱怨空的fo:inline,你可以使用一个不间断的空格fo:footnote
。