简体   繁体   中英

xsl-fo different header for first page of document, not each chapter

I'm using XSL-fo to output from DITA bookmaps to PDF, and I want a unique header that appears on the first page of the document, but not on the first page of every chapter. I've tried using the page-position attribute of the conditional-page-master-reference element, but this results in my custom header appearing on the first page of every chapter, whereas I want the custom header to appear only a single time, on the first page of the document, with another header appearing on every other page of the document, irrespective of chapter boundaries.

You need to use page-sequence-master

<fo:page-sequence-master master-name="recto-verso-document">
    <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference odd-or-even="odd" master-reference="page-odd" blank-or-not-blank="not-blank"/>
        <fo:conditional-page-master-reference blank-or-not-blank="not-blank" odd-or-even="odd" page-position="first" master-reference="last-page-odd"/>
        <fo:conditional-page-master-reference blank-or-not-blank="not-blank" odd-or-even="even" page-position="rest" master-reference="last-page-even"/>
        <fo:conditional-page-master-reference odd-or-even="even" master-reference="page-even" blank-or-not-blank="not-blank"/>
    </fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>

Then for each conditional-page-master-reference, define your simple-page-master for each one:

<fo:simple-page-master master-name="first-page-odd" page-height="11in" page-width="8.5in" margin-top="0.5in" margin-left="1.0in" margin-right="0.5in">
        <fo:region-body region-name="xsl-region-body" margin-top="0.80in" margin-bottom=".5in" overflow="auto"/>
        <fo:region-before region-name="xsl-region-before-first" extent="1in"/>
        <fo:region-after region-name="xsl-region-after" extent="0.6in"/>
</fo:simple-page-master>

<fo:simple-page-master master-name="page-odd" page-height="11in" page-width="8.5in" margin-top="0.5in" margin-left="1.0in" margin-right="0.5in">
        <fo:region-body region-name="xsl-region-body" margin-top="0.80in" margin-bottom=".5in" overflow="auto"/>
        <fo:region-before region-name="xsl-region-before" extent="1in"/>
        <fo:region-after region-name="xsl-region-after" extent="0.6in"/>
</fo:simple-page-master>

Then in your page sequence define your regions for each region-name. For example:

<fo:static-content flow-name="xsl-region-before-first">
        <fo:block>do something for your header</fo:block>
    </fo:static-content>


 <fo:static-content flow-name="xsl-region-before">
        <fo:block>do something for your header</fo:block>
    </fo:static-content>

Without seeing your FO, this is the best I can offer in terms of how to resolve your problem

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM