当前位置: 首页 > 知识库问答 >
问题:

Apache FOP:如何仅从第一页隐藏表头?

鲁博雅
2023-03-14

我有一个使用ApacheFOP生成的文档,其中包含一个多页动态表,该表具有一个fo:table标头,其中包含使用fo:marker和fo:retrievetable标记的上一页中的项目总和。

<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的“在中断时省略标头”属性完全相反的选项。

我遇到了不同渲染引擎的以下选项:

  1. fpc: table-omit-head er-at-start="true"
  2. rx:表省略初始标头

…但找不到与apache fop一起工作的东西。

对于Apache FOP和标准XSL-FO,是否有类似的解决方法?

我还尝试对标题中的sum行使用条件可见性:

<xsl:if test="position() > 1">
    <fo:table-row>
    ...
    </fo:table-row>
</xsl:if>

不幸的是,似乎并不是在每个页面上都评估标题条件,而是在第一页上执行一次,使该行在所有页面上都不可见(而不仅仅是我预期的第一页)。

共有2个答案

童琪
2023-03-14

添加一个空的< code>fo:marker,该标记将仅由第一页上的< code > fo:retrieve-table-marker 选取。

张勇
2023-03-14

如果您的文档中包含此表的部分可以隔离成一个页面序列,则:

1)用不同的第一页设置页面顺序(因此使用first和any)

2)在除第一个页面之外的所有页面的页面模板中,在之前的区域中创建一个匹配的简单单行表,设置为最底部,以便它位于您正文中的表格顶部。精心策划,您可以使标题中的小表格看起来像是一个“表格标题”,即使它在页面标题中。

3)显然不要在第一页上放置任何标题,当然也不要放在正文的表格上,除非你愿意,你可以在这里放一些完全不同的东西,因为它将是第一页之前的区域。

4)您可以使用常规标记来保持运行总数,并将该标记拉到后面页面标题中的表中。

 类似资料:
  • 这个代码有问题吗?

  • 问题内容: 如何快速隐藏第一个ViewController或特定ViewController的导航栏? 我在中使用了以下代码: 以及: 两种方法都对所有ViewController隐藏导航控制器。 问题答案: 如果您知道其他所有视图都应显示该栏,则可以将其重新设置为可见。 在Swift中:

  • 我在主报表中有一个子报表和页脚,我需要隐藏子报表部分的页脚。有没有办法做到这一点? 详情:我有主要报告。它有几个细节带和一个页脚。其中一个细节带(细节4)用从查询返回的数据填充。在这个带之后是“细节5”带,其中只有子报告,这是最后一个细节带。我的子报告包含几页文本。我需要页脚从我的主要报告不显示在这几页。所以我需要的是:页脚应该应用于页面,这是在细节带1-4生成的,但不是“细节5”。

  • 问题内容: 我有一些HTML表格,其中文本数据太大而无法容纳。因此,它可以垂直扩展单元格以适应此情况。因此,现在发生溢出的行的高度是数据量较小的行的两倍。这是无法接受的。如何强制表格具有相同的行高? 这是一些重现该问题的标记。表格仅应为一行的高度,并隐藏溢出的文字。 问题答案: 需要在单元格上和单元格上指定两个属性。您还需要将移至单元格

  • 问题内容: 我已经在ASPX中创建了一个表。我想根据要求隐藏其中一列,但是没有像HTML表构建那样的属性。我该如何解决我的问题? 问题答案: 为此,您需要使用样式表。

  • 问题内容: 通过浏览器的“查看源代码”功能查看源代码时,是否可以从网页的html隐藏Javascript代码? 我知道可以对代码进行混淆,但我希望将其 隐藏 在视图源功能中。 问题答案: 我不确定其他人是否真的直接解决了您的问题,即正在从浏览器的“查看源代码”命令中查看代码。 就像其他人所说的那样,没有办法保护要在浏览器中运行的javascript免受确定的查看者的攻击。如果浏览器可以运行它,那么