我有一个使用Apache FOP生成的文档,该文档具有多页动态表,该表具有 fo:table-header ,并使用 fo:marker < / strong>和 fo:retrieve-table-marker 。
<fo:table-header>
<fo:table-row>
<--! column title cells here -->
</fo:table-row>
<fo:table-row>
<fo:table-cell number-columns-spanned="4">
<fo:block>Übertrag</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<fo:inline>
<fo:retrieve-table-marker retrieve-class-name="totalsMarkerHeader"
retrieve-position-within-table="last-ending-within-page"
retrieve-boundary-within-table="table"/>
</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:for-each select="items/item">
<fo:table-row page-break-inside="avoid">
<--! data table cells here -->
<fo:block>
<fo:marker marker-class-name="totalsMarkerHeader">
<xsl:value-of select="format-number(sum(preceding::total_price),'€#,##0.00')"/>
</fo:marker>
</fo:block>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
这很好用,除了在第一页上此行无用之外,我想从第一页上将其删除,然后将其放在文档的其他每一页上。
我要寻找的是与 fo:table 的“ 省略省略标题”属性完全相反的选项。
我遇到了不同渲染引擎的以下选项:
...但是找不到适用于apap fop的东西。
是否有一种解决方法可以对Apache FOP和标准XSL-FO进行类似的操作?
我还尝试对标题中的总和行使用条件可见性:
<xsl:if test="position() > 1">
<fo:table-row>
...
</fo:table-row>
</xsl:if>
不幸的是,似乎并没有在每个页面上都评估标头条件,而是在第一页上执行了一次,使得该行在所有页面上都不可见(不仅仅是我期望的第一页)。
答案 0 :(得分:0)
如果文档中带有此表的部分可以隔离为单个页面序列,则:
1)设置具有不同首页的页面顺序(因此请使用第一页和任何一页)
2)在除第一个页面之外的所有页面的页面模板中,在之前的区域中创建一个匹配的简单单行表,将其设置在最底端,以便它落在您体内的表顶部。经过精心计划,您可以使页眉中的小表看起来像是“表头”,即使它位于页面页眉中。
3)显然,除非您愿意,否则不要在首页上放置任何标题,当然也不要在正文中的表上放置任何标题,您可以在此处放置完全不同的内容,因为它是第一页之前的区域。
4)您可以使用常规标记来保持运行总计,并将该标记拉到后面页面标题中的表中。
答案 1 :(得分:0)
添加一个空的where person0_.person_id is null
,fo:marker
仅在第一页上将其拾取。