【发布时间】:2015-08-08 14:39:48
【问题描述】:
我的文档在最后一页的底部有一些内容(包含一个或多个地址的表格)。 到目前为止,表格是标准尺寸,所以我可以将表格插入页脚并将页脚附加到最后一页:
<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,这意味着“使单元格足够大以适合内容”。所以我不能再把这张桌子放在页脚里了。
我的下一个想法是在正文区域的末尾插入表格。 这可以使用脚注结构来完成。当我将脚注放在文档内容的末尾时,会将表格与文档中的最后一个文本放在同一页上。
<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 页。这种方法仅适用于内容以偶数页结束并且表格适合的情况在剩下的空间里。
我可以使用其他方法在文档最后一页的底部获取可变大小的块吗?
【问题讨论】:
-
目前,我正在使用一种解决方法,将表格放在最后一页页脚中。页脚的大小由表中的行数决定(基本上我假设每行的高度为 50 毫米,并将页脚范围设置为此)。
标签: xsl-fo