Comment afficher le numéro de page (N de N) en utilisant xslt dans un rapport PDF
Je suis à l'aide de XSLT pour générer un fichier PDF rapport. Mes exigences sont pour afficher le numéro de page dans le format de Page N N e.g.Page 1 de 3) dans le pied de page du rapport. Pour des valeurs statiques, il fonctionne très bien et il se répète sur chaque page. Le nombre total de pages dans le rapport ne sont pas connus et il change les temps de parcours, alors, comment je vais accomplir cette tâche.
Mon code XSLT extrait de
<xsl:template name="footerall">
<xsl:variable name="maxwidth" select="7.07000" />
<fo:static-content flow-name="xsl-region-after">
<fo:block>
<xsl:variable name="tablewidth29" select="$maxwidth * 1.00000" />
<xsl:variable name="sumcolumnwidths29" select="0.04167 + 1.56250 + 0.04167" />
<xsl:variable name="factor29">
<xsl:choose>
<xsl:when
test="$sumcolumnwidths29 > 0.00000 and $sumcolumnwidths29 > $tablewidth29">
<xsl:value-of select="$tablewidth29 div $sumcolumnwidths29" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="1.000" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="defaultcolumns29" select="1" />
<xsl:variable name="defaultcolumnwidth29">
<xsl:choose>
<xsl:when test="$factor29 < 1.000">
<xsl:value-of select="0.000" />
</xsl:when>
<xsl:when test="$defaultcolumns29 > 0">
<xsl:value-of
select="($tablewidth29 - $sumcolumnwidths29) div $defaultcolumns29" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="0.000" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="columnwidth29_0" select="$defaultcolumnwidth29" />
<xsl:variable name="columnwidth29_1" select="1.56250 * $factor29" />
<fo:table width="{$tablewidth29}in" border-collapse="separate"
border-separation="0.04167in" color="black" display-align="center">
<fo:table-column column-width="{$columnwidth29_0}in" />
<fo:table-column column-width="{$columnwidth29_1}in" />
<fo:table-body>
<fo:table-row>
<fo:table-cell number-columns-spanned="2"
padding-top="0.00000in" padding-bottom="0.00000in" padding-left="0.00000in"
padding-right="0.00000in">
<fo:block padding-top="1pt" padding-bottom="1pt">
<fo:block text-align="center" space-before.optimum="-8pt">
<fo:leader leader-length="100%" leader-pattern="rule"
rule-thickness="1pt" color="black" />
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell
font-size="inherited-property-value('font-size') - 2pt"
text-align="left" padding-top="0.00000in" padding-bottom="0.00000in"
padding-left="0.00000in" padding-right="0.00000in">
<fo:block padding-top="1pt" padding-bottom="1pt">
<fo:inline font-family="Courier" font-size="10px">
<xsl:value-of select="$My XPath to varaible" />
</fo:inline>
<fo:inline font-family="Courier" font-size="10px">
<xsl:text> - </xsl:text>
<xsl:text>        </xsl:text>
<xsl:text>Page 1 of 1</xsl:text>
</fo:inline>
<fo:inline font-family="Courier" font-size="10px">
<xsl:value-of select="$My XPath to varaible" />
</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell
font-size="inherited-property-value('font-size') - 2pt"
text-align="right" padding-top="0.00000in" padding-bottom="0.00000in"
padding-left="0.00000in" padding-right="0.00000in">
<fo:block padding-top="1pt" padding-bottom="1pt" />
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:static-content>
</xsl:template>
Je vais remplacer la chaîne (Page 1 de 1) par une variable, mais comment gérer cela.
S'il vous plaît aider moi.
source d'informationauteur sns
Vous devez vous connecter pour publier un commentaire.
J'ai résolu mon problème en suivant les instructions ci-dessous.
Mettre un objet de mise en forme avec un id à la fin de la zone. Vous pourrez ensuite les instructions de bloc qui s'affiche sur la dernière page de ce document. Voici comment le balisage ressemble:
Le code crée un bloc avec un id de TheVeryLastPage (une valeur qui est peu susceptible d'être utilisé par n'importe qui), et maintenant vous pouvez vous référer à cet id pour obtenir le numéro de page de la dernière page de ce document. Voici comment le contenu dans la zone de:
Lors de la FOP formats de balisage, il génère quelque chose comme "Page 2 de 5".
Mon URL de référence est: http://www.ibm.com/developerworks/xml/tutorials/x-xslfo2/section4.html
Vous devriez ajouter un
id
attribut à votrefo:page-sequence
élément, et ensuite utiliser unpage-number-citation-last
.Voir les specs: http://www.w3.org/TR/xslfo20/#fo_page-number-citation et http://www.w3.org/TR/xslfo20/#fo_page-number-citation-last