XSL FO: содержимое верхнего и нижнего колонтитула переполняется - PullRequest
0 голосов
/ 08 февраля 2011

Я создаю pdf-версию modspecs (в docbook), используя XSL-fo.В настоящее время я использую этот XSLT для управления преобразованием:

...
<xsl:param name="footer.rule" select="0"/>
<xsl:param name="header.rule" select="1"/>
<xsl:param name="fop.extensions" select="0"/>
<xsl:param name="fop1.extensions" select="1"/>

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
</xsl:template>

<xsl:template name="footer.content">
    <xsl:param name="pageclass" select="''"/>
    <xsl:param name="sequence" select="''"/>
    <xsl:param name="position" select="''"/>
    <xsl:param name="gentext-key" select="''"/>
    <fo:block space-before="12pt" keep-together.within-page="auto"/>
    <xsl:choose>
        <xsl:when test="$position = 'left'">
            <fo:block>Acme Corp</fo:block>
            <fo:block><fo:leader leader-pattern="space"/></fo:block>
        </xsl:when>
        <xsl:when test="$position = 'right'">
            <fo:block>Cool Stuff</fo:block>
            <fo:block>Page <fo:page-number/> of <fo:page-number-citation ref-id="last-page"/></fo:block>
        </xsl:when>
    </xsl:choose>
</xsl:template>
<xsl:template name="header.content">
    <xsl:param name="pageclass" select="''"/>
    <xsl:param name="sequence" select="''"/>
    <xsl:param name="position" select="''"/>
    <xsl:param name="gentext-key" select="''"/>
    <xsl:choose>
        <xsl:when test="$position = 'left'">
            <fo:block><fo:inline font-weight="bold"><xsl:value-of select="$app_name"/> - <xsl:value-of select="d:title/text()"/></fo:inline></fo:block>
            <fo:block>
                <fo:retrieve-marker retrieve-class-name="section.head.marker"
                    retrieve-position="first-including-carryover"
                    retrieve-boundary="page-sequence"/>
            </fo:block>
        </xsl:when>
        <xsl:when test="$position = 'right'">
            <fo:block>Version <xsl:value-of select="$app_version"/></fo:block>
            <fo:block> Build <xsl:value-of select="$build_number"/></fo:block>
        </xsl:when>
    </xsl:choose>
</xsl:template>

Теперь верхний и нижний колонтитулы отображаются нормально, но по какой-то причине (особенно на ранних страницах modspec) содержимое страницыперекрывая как верхний, так и нижний колонтитулы.Есть ли способ исправить это, чтобы больше не было перекрытия?

1 Ответ

0 голосов
/ 09 февраля 2011

Попробуйте настроить некоторые параметры, управляющие макетом страницы.Я бы начал с body.margin.top и body.margin.bottom.Смотри http://www.sagehill.net/docbookxsl/PrintOutput.html#PageLayout.

...