Предотвращение нежелательных пустых страниц в преобразовании xsl-fo - PullRequest
4 голосов
/ 31 марта 2011

Я использую xsl-fo для создания документа pdf с пронумерованными страницами (страница x из x), но в конце документа всегда создается пустая страница.Кто-нибудь знает, почему следующий xsl генерирует пустую страницу?Если я удалю последнюю страницу fo: block, пустая страница не будет отображаться.

<xsl:template match="/Report">
    <fo:root font-family="Georgia,Garamond,New York,Times,Time New Roman,Serif">
        <xsl:copy-of select="$fo-layout-master-set"/>
        <fo:page-sequence master-reference="default-page" initial-page-number="1" format="1">
            <!-- Footer content -->
            <xsl:call-template name="getStaticFooter"/>

            <fo:flow><fo:block/>
            </fo:flow>
        </fo:page-sequence>

        <fo:page-sequence master-reference="default-page">
            <!-- Footer content -->
            <xsl:call-template name="getStaticFooter"/>

            <fo:flow>

                <fo:block id="last-page"/>
            </fo:flow>
        </fo:page-sequence>
    </fo:root>
</xsl:template>

<xsl:template name="getStaticFooter">
    <fo:static-content flow-name="xsl-region-after">
        <fo:table xsl:use-attribute-sets="contentTable">
            <fo:table-column number-columns-repeated="3" width="proportional-column-width(10)"/>
            <fo:table-body>
                <fo:table-row>
                    <fo:table-cell text-align="right">
                        <fo:block>
                            <fo:inline font-size="7pt" font-weight="bold">Generated by </fo:inline>
                        </fo:block>
                        <fo:block>
                            <fo:inline font-size="7pt">Page <fo:page-number/> of <fo:page-number-citation ref-id="last-page"/></fo:inline>
                        </fo:block>
                    </fo:table-cell>
                </fo:table-row>
            </fo:table-body>
        </fo:table>
    </fo:static-content>
</xsl:template>

1 Ответ

2 голосов
/ 31 марта 2011

Я думаю, это потому, что у вас есть 2 разных fo:page-sequence. Попробуйте переместить <fo:block id="last-page"/> в конец потока в первой последовательности страниц и удалить вторую fo:page-sequence.

Пример:

<xsl:template match="/Report">
    <fo:root font-family="Georgia,Garamond,New York,Times,Time New Roman,Serif">
        <xsl:copy-of select="$fo-layout-master-set"/>
        <fo:page-sequence master-reference="default-page" initial-page-number="1" format="1">
            <!-- Footer content -->
            <xsl:call-template name="getStaticFooter"/>    
            <fo:flow>
              <fo:block/><!-- I'm assuming this is where the actual content will exist; there's most likely a <xsl:apply-templates/> here. -->
              <fo:block id="last-page"/>
            </fo:flow>
        </fo:page-sequence>    
    </fo:root>
</xsl:template>
...