Search code examples
staticfooterxsl-fo

XSL-FO footer on last page


I have an XSL-FO file with a header and footer.

I added static content for the header and footer, but I want the footer to only display on the last page.

How can I do this?

<?xml version="1.0" encoding="ISO-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="A4" page-width="210mm" page-height="297mm" margin-top="1cm" margin-bottom="1cm"
                               margin-left="1cm" margin-right="1cm">
            <fo:region-body margin-top="90mm" margin-bottom="80mm"/>
            <fo:region-before extent="90mm"/>
            <fo:region-after extent="80mm"/>
            <fo:region-start/>
            <fo:region-end/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="A4">
        <fo:static-content flow-name="xsl-region-before">
            <fo:block>
                <fo:external-graphic src="images/logo.png" content-width="scale-to-fit" height="50mm"/>
            </fo:block>
        </fo:static-content>
        <fo:static-content flow-name="xsl-region-after">
            <fo:block>
                <fo:external-graphic src="images/signature.gif" content-width="scale-to-fit" height="50mm"/>
            </fo:block>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
            ...
        </fo:flow>
    </fo:page-sequence>
</fo:root>

Solution

  • Within <fo:layout-master-set>, you can define a page sequence:

    <page-sequence-master master-name="pages">
      <repeatable-page-master-alternatives>
        <conditional-page-master-reference page-position="last" master-reference="last-page"/>
        <conditional-page-master-reference master-reference="other-page"/>
      </repeatable-page-master-alternatives>
    </page-sequence-master>
    

    Then you can define a simple-page-master for the last page, which contains a region-after that only appears on this page.

    Tutorial