我正在使用XSL-FO(使用Apache FOP处理)。
我的表的xsl代码如下所示:
<!-- ... Some xsl fo code with data occupying 1/2 page ... -->
<fo:table>
<fo:table-header>
Item Name
</fo:table-header>
<fo:table-footer>
Total:
<xsl:value-of select="total" />
</fo:table-footer>
<fo:table-body>
<fo:table-row>
<xsl:value-of select="itemName" />
</fo:table-row>
</fo:table-body>
</fo:table>
我想在每个页面的底部都有一个表格页脚(我尝试使用fo:table-footer
)。
我还想在第一页后面的页面上添加一个脚注:如果内容需要多个页面,我需要在页脚后面添加脚注"Continuation of previous page"
。
表格页脚必须仅显示最后一页的总价值(我的意思是,如果我的6页表格内容除了最后一页之外的每页都必须将页脚的总值设为空白,并且有价值的最后一页页脚。
XML来源:
<itemDetail>
<itemName>Car1</itemName>
<itemName>Car2</itemName>
<itemName>Car3</itemName>
<itemName>Car4</itemName>
<itemName>Car5</itemName>
<itemName>Car6</itemName>
<itemName>Car7</itemName>
<itemName>Car8</itemName>
<itemName>Car9</itemName>
<itemName>Car10</itemName>
<itemName>Car11</itemName>
<itemName>Car12</itemName>
<itemName>Car13</itemName>
<itemName>Car14</itemName>
<itemName>Car15</itemName>
<itemName>Car16</itemName>
<itemName>Car17</itemName>
<itemName>Car18</itemName>
<itemName>Car19</itemName>
<itemName>Car20</itemName>
</itemDetail>
<total>20</total>
第1页的必需示例输出:
第2页所需的样本输出:
答案 0 :(得分:1)
重新阅读你的问题后,我会这样做。 你应该有第一个,休息和最后一个页面模板。
这有两个原因 - (1)您希望底部的桌面页脚和(2)许多产品(包括FOP)不支持retrieve-table-marker。将标记检索到表行对于格式化程序来说是非常有问题的,特别是检索到的内容的大小使得表格重新格式化(就像行不再适合)。
第一页模板region-after将有一个表格行,其中&#34; Total:&#34;在它空白。
其余页面模板region-after将有一个表格行,其中&#34; Total:&#34;空白,然后是&#34; *继续上一页&#34;。
最后一页模板在该区域中没有任何内容 - 之后为Total:,只是&#34; *上一页的继续&#34;。
创建表格时,添加&#34;总计:&#34;在添加具有适当总数的所有其他行之后在表中的行。您可以在最后添加(没有那些空白行),或者如果要放入空白行,则将区域放在一行之后,以容纳此行。我不建议这样做,除非你必须有空行,所有表必须是相同的高度。你也可以只是留在页脚中并将标记拉到页脚而不用检索表标记。
唯一需要注意的是,是否选择行大小和页面尺寸以便&#34; Total:&#34;放置在region-after区域中的行与表的其余部分很好地匹配。
有关页面模板设置和顺序,请参阅How to position a block at the bottom in the region-body。在这种情况下,您可以使用唯一的页面模板在区域中放置任何内容 - 之后您不希望&#34; * Continuation&#34;在那种情况下。