xsl-fo文件第一页的不同标题,而不是每章

时间:2013-11-22 17:42:50

标签: xml xslt xsl-fo

我正在使用XSL-fo从DITA书签输出到PDF,我想要一个独特的标题出现在文档的第一页,但不是在每章的第一页。我已经尝试使用conditional-page-master-reference元素的page-position属性,但这导致我的自定义标题出现在每章的第一页上,而我希望自定义标题只出现一次,在文档的第一页上,文档的每个其他页面上都出现另一个标题,不论章节边界如何。

1 个答案:

答案 0 :(得分:2)

您需要使用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>

然后,对于每个条件页面主参考,为每个参数定义simple-page-master:

<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>

然后在您的页面序列中为每个region-name定义您的区域。例如:

<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>

在没有看到您的FO的情况下,这是我能提供的最佳解决方案