如何只在最后一页上放置页脚

时间:2019-07-02 12:22:39

标签: xml xsl-fo apache-fop

我不太了解它是如何工作的。 这是我写的:

<xsl:template match="documento">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
    <fo:simple-page-master
            master-name="pages-normale"
            page-width="297mm"
            page-height="210mm"
            margin-top="0.5cm"
            margin-bottom="0.5cm"
            margin-left="0.5cm"
            margin-right="0.5cm">
        <fo:region-body   margin-top="2cm" extent="1cm"/>
        <fo:region-before margin-top="1cm" margin-bottom="1cm" extent="1cm"/>
        <fo:region-after  margin-top="1cm" margin-bottom="1cm" extent="1cm"/>
    </fo:simple-page-master>
    <fo:simple-page-master master-name="mylastpage"  page-width="297mm" page-height="210mm" margin-top="0.5cm" margin-bottom="0.5cm"  margin-left="0.5cm" margin-right="0.5cm">
                <fo:region-body   margin-top="2cm" extent="1cm"/>
                <fo:region-before margin-top="1cm" margin-bottom="1cm" extent="1cm"/>
                <fo:region-after  margin-top="1cm" margin-bottom="1cm" extent="1cm"/>

            </fo:simple-page-master>
            <fo:page-sequence-master master-name="pages">
                <fo:repeatable-page-master-alternatives>
                    <fo:conditional-page-master-reference page-position="last"   master-reference="mylastpage"/>
                </fo:repeatable-page-master-alternatives>
            </fo:page-sequence-master>
</fo:layout-master-set>

        <xsl:variable name="pnum">
        <xsl:value-of select="pagnum"/>
        </xsl:variable>
<fo:page-sequence
        master-reference="pages-normale"
        initial-page-number="{$pnum}"
        force-page-count="even"
        language="it"
        country="it">
        <fo:static-content flow-name="xsl-region-before">
        </fo:static-content>
        <fo:static-content flow-name="mylastpage">
        <fo:block>test-1</fo:block>
                        </fo:static-content>
    <fo:flow flow-name="xsl-region-body">
     </fo:flow>
</fo:page-sequence>

我将“ mylastpage”设置为类似于pdf的条件条件页面母版的最后一页,但是,但是fop给了我这个错误:

“在fo:static-content上的流名称“ mylastpage”无法映射到layout-master-set中的区域名称。(无上下文信息可用)”

有人可以告诉我我的错吗?

预先感谢

最诚挚的问候,马可。

1 个答案:

答案 0 :(得分:1)

您在mylastpage中使用fo:static-content,但是没有匹配的region-name(例如在fo:region-after中)。

我要做的是创建一个fo:page-sequence-master,其中包含所有可重复页面母版替代品。为第一页,最后一页和其余页面(使用page-position属性)选择另一种方法。

由于您在首页上没有做任何特别的事情,因此它只能引用您的常规页面(pages-normale)。

这是最后一页页脚有效的示例:

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:page-sequence-master master-name="all-the-pages">
            <fo:repeatable-page-master-alternatives>
                <fo:conditional-page-master-reference master-reference="my-page" page-position="rest"/>
                <fo:conditional-page-master-reference master-reference="my-page" page-position="first"/>
                <fo:conditional-page-master-reference master-reference="my-last-page" page-position="last"/>
            </fo:repeatable-page-master-alternatives>
        </fo:page-sequence-master>
        <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
            <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
        </fo:simple-page-master>
        <fo:simple-page-master master-name="my-last-page" page-width="8.5in" page-height="11in">
            <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
            <fo:region-after region-name="last-after" extent="1in" background-color="#742727"/>         
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="all-the-pages">
        <fo:static-content flow-name="last-after">
            <fo:block color="white">Last Page Footer!</fo:block>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
            <fo:block>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Blandit aliquam etiam erat velit. Et netus et malesuada fames. Dictumst vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras. At tellus at urna condimentum mattis. Euismod quis viverra nibh cras pulvinar mattis. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Urna cursus eget nunc scelerisque. Mattis rhoncus urna neque viverra justo nec ultrices dui sapien. Risus feugiat in ante metus dictum. Duis ut diam quam nulla porttitor massa. Netus et malesuada fames ac. Tincidunt lobortis feugiat vivamus at. Aliquet nec ullamcorper sit amet risus nullam eget. Vivamus at augue eget arcu.</fo:block>
            <fo:block>Facilisis magna etiam tempor orci eu lobortis elementum nibh tellus. A lacus vestibulum sed arcu non odio. Feugiat vivamus at augue eget. Quam vulputate dignissim suspendisse in est ante. Facilisis mauris sit amet massa vitae. Amet purus gravida quis blandit turpis cursus in hac habitasse. Nulla facilisi cras fermentum odio eu. Et egestas quis ipsum suspendisse ultrices gravida dictum fusce ut. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Mi in nulla posuere sollicitudin aliquam ultrices sagittis orci a. Feugiat scelerisque varius morbi enim. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Mattis pellentesque id nibh tortor id aliquet. Vel pretium lectus quam id leo in vitae turpis massa. Elementum pulvinar etiam non quam lacus. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo nec. Aliquam ut porttitor leo a diam. Nisl purus in mollis nunc sed. Amet cursus sit amet dictum sit amet justo.</fo:block>
            <fo:block>Cursus euismod quis viverra nibh cras pulvinar. Mauris pharetra et ultrices neque ornare. Ornare suspendisse sed nisi lacus sed. Commodo odio aenean sed adipiscing diam donec adipiscing. Lorem dolor sed viverra ipsum. Lobortis mattis aliquam faucibus purus in massa tempor nec. Odio facilisis mauris sit amet. Dignissim diam quis enim lobortis scelerisque. Consequat interdum varius sit amet mattis vulputate enim nulla. Vestibulum rhoncus est pellentesque elit ullamcorper. Dis parturient montes nascetur ridiculus mus mauris. Felis donec et odio pellentesque diam volutpat. Id diam vel quam elementum pulvinar etiam non. Lacinia at quis risus sed vulputate odio ut enim blandit. Tristique senectus et netus et malesuada fames. Tincidunt praesent semper feugiat nibh. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque.</fo:block>
            <fo:block>Amet justo donec enim diam vulputate ut pharetra sit. Vulputate mi sit amet mauris. Nec feugiat nisl pretium fusce id velit. Vehicula ipsum a arcu cursus vitae. Congue nisi vitae suscipit tellus mauris a diam. Quis ipsum suspendisse ultrices gravida dictum fusce. Integer quis auctor elit sed vulputate mi sit. Ultricies leo integer malesuada nunc vel risus. Consequat semper viverra nam libero. Tortor vitae purus faucibus ornare suspendisse sed nisi lacus sed. Elementum curabitur vitae nunc sed. Sollicitudin ac orci phasellus egestas tellus rutrum. Vivamus arcu felis bibendum ut tristique et egestas quis.</fo:block>
            <fo:block>Bibendum at varius vel pharetra. Turpis nunc eget lorem dolor sed viverra ipsum nunc. Commodo sed egestas egestas fringilla phasellus faucibus scelerisque. Turpis nunc eget lorem dolor sed viverra ipsum nunc. Venenatis a condimentum vitae sapien pellentesque habitant morbi. Platea dictumst quisque sagittis purus sit amet volutpat. Volutpat consequat mauris nunc congue nisi vitae suscipit. Pellentesque eu tincidunt tortor aliquam. At augue eget arcu dictum varius duis at consectetur lorem. Viverra aliquet eget sit amet. Sed libero enim sed faucibus turpis in eu mi. Nisi lacus sed viverra tellus in. Facilisis gravida neque convallis a cras semper auctor. Sapien nec sagittis aliquam malesuada bibendum arcu vitae. Sit amet nisl suscipit adipiscing bibendum. Maecenas sed enim ut sem viverra aliquet eget sit. Viverra ipsum nunc aliquet bibendum enim facilisis.</fo:block>
            <fo:block>Consectetur purus ut faucibus pulvinar elementum integer enim. Adipiscing enim eu turpis egestas pretium. Nec sagittis aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Viverra maecenas accumsan lacus vel facilisis volutpat est velit egestas. Enim sit amet venenatis urna cursus eget. Mauris commodo quis imperdiet massa tincidunt nunc pulvinar sapien et. Aliquet porttitor lacus luctus accumsan. Risus quis varius quam quisque. Id leo in vitae turpis massa. Faucibus in ornare quam viverra. Sagittis id consectetur purus ut faucibus pulvinar elementum integer enim. Ultrices in iaculis nunc sed. Eu volutpat odio facilisis mauris sit amet. Pulvinar neque laoreet suspendisse interdum consectetur libero id. Arcu dui vivamus arcu felis. Fringilla urna porttitor rhoncus dolor purus. Urna cursus eget nunc scelerisque viverra mauris in. Cras tincidunt lobortis feugiat vivamus at augue eget. Vitae purus faucibus ornare suspendisse. Pellentesque id nibh tortor id aliquet lectus proin nibh nisl.</fo:block>
            <fo:block>Commodo odio aenean sed adipiscing. Rhoncus dolor purus non enim praesent elementum facilisis. Dolor sed viverra ipsum nunc aliquet bibendum enim. Vulputate ut pharetra sit amet aliquam id. In egestas erat imperdiet sed euismod nisi porta. Lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Sit amet dictum sit amet justo donec. Dui sapien eget mi proin sed libero enim. Duis ut diam quam nulla porttitor massa id. Diam maecenas sed enim ut sem viverra. Aliquam ultrices sagittis orci a scelerisque purus semper eget. Tristique et egestas quis ipsum suspendisse ultrices gravida dictum. Vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa.</fo:block>
            <fo:block>At tempor commodo ullamcorper a. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Tortor condimentum lacinia quis vel. Tempus quam pellentesque nec nam aliquam sem et. Erat pellentesque adipiscing commodo elit at imperdiet dui accumsan sit. Nulla facilisi morbi tempus iaculis urna id volutpat. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Turpis egestas maecenas pharetra convallis posuere morbi leo urna. Varius quam quisque id diam vel quam elementum pulvinar. Fringilla ut morbi tincidunt augue interdum velit. Diam phasellus vestibulum lorem sed risus. Dolor sit amet consectetur adipiscing elit ut aliquam.</fo:block>
            <fo:block>Scelerisque varius morbi enim nunc faucibus a pellentesque sit amet. Cras pulvinar mattis nunc sed blandit libero volutpat sed. Ultricies leo integer malesuada nunc vel. Pellentesque adipiscing commodo elit at imperdiet. Enim eu turpis egestas pretium aenean pharetra. Aliquet nec ullamcorper sit amet risus nullam eget. Et netus et malesuada fames ac turpis egestas integer eget. Turpis cursus in hac habitasse platea. Donec adipiscing tristique risus nec feugiat in fermentum posuere. Adipiscing bibendum est ultricies integer quis.</fo:block>
            <fo:block>Cras adipiscing enim eu turpis egestas pretium aenean pharetra magna. Amet venenatis urna cursus eget nunc scelerisque. A arcu cursus vitae congue mauris rhoncus. Sit amet facilisis magna etiam tempor orci eu. Mattis nunc sed blandit libero volutpat sed cras ornare arcu. Aenean pharetra magna ac placerat vestibulum. Egestas congue quisque egestas diam in arcu. Urna cursus eget nunc scelerisque viverra mauris in aliquam. Suspendisse interdum consectetur libero id faucibus nisl. Sit amet tellus cras adipiscing. Malesuada fames ac turpis egestas sed tempus. Facilisis mauris sit amet massa vitae tortor condimentum. Diam maecenas ultricies mi eget. Placerat in egestas erat imperdiet sed euismod nisi. Eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada. Posuere ac ut consequat semper. Luctus accumsan tortor posuere ac ut. In vitae turpis massa sed. Arcu cursus euismod quis viverra. Ac tortor vitae purus faucibus ornare suspendisse sed nisi.</fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

这将创建一个包含3页的PDF。这是最后一页的样子……

enter image description here

您的FO中还存在一些验证错误,例如:

  • extent属性在fo:region-body上无效
  • margin-topmargin-bottomfo:region-beforeregion-after上无效
  • country上的
  • fo:page-sequence必须为noneinherit