页面方向取决于条件

问题描述 投票:0回答:1

im试图根据条件更改文档的页面方向,但是我不知道该怎么做。阅读文档并没有多大帮助,也找不到任何示例。

我这样设置文档:

<fo:layout-master-set>
        <fo:simple-page-master master-name="first-page" page-height="29.7cm" page-width="21.0cm" margin="1cm 2.1cm 0.8cm 2.1cm">
          <fo:region-body region-name="xsl-region-body" margin-top="105px" margin-bottom="50px"/>
          <fo:region-before region-name="xsl-region-before-first" extent="5in"/>
          <fo:region-after region-name="xsl-region-after" extent="5in" display-align="after"/>
        </fo:simple-page-master>
    <fo:simple-page-master master-name="other-page" page-height="21.0cm" page-width="29.7cm" margin="1cm 2.1cm 0.8cm 2.1cm">
      <fo:region-body region-name="xsl-region-body" margin-top="105px" margin-bottom="50px"/>
      <fo:region-before region-name="xsl-region-before-other" extent="5in"/>
      <fo:region-after region-name="xsl-region-after" extent="5in" display-align="after"/>
    </fo:simple-page-master>
        <fo:page-sequence-master master-name="pages">
      <fo:repeatable-page-master-alternatives>
              <fo:conditional-page-master-reference page-position="first" master-reference="first-page"/>
              <fo:conditional-page-master-reference page-position="only" master-reference="other-page"/>
      </fo:repeatable-page-master-alternatives>
        </fo:page-sequence-master>
  </fo:layout-master-set>


<fo:page-sequence master-reference="pages">
 <fo:static-content flow-name="xsl-region-before-first">
...
 </fo:static-content>
 <fo:static-content flow-name="xsl-region-before-first">
...
 </fo:static-content>
 <fo:static-content flow-name="xsl-region-before-first">
...
 </fo:static-content>
 <fo:flow flow-name="xsl-region-body">
 ...
 </fo:flow>

这将首先生成第一个垂直页面,然后其余所有都是水平页面。这些水平页面是在for-each循环中生成的。我想做的是,在可以放置在任意位置的特定页面-before =“ break”之后,我可以根据每个项目的数据来更改下一页的布局。

编辑:我正在使用xmlns:fo 2.0版。我的确切文档应如下所示:

  • 第一页(工作正常)
  • X页:使用每个循环遍历项A生成的LANDSCAPE VIEW(工作正常)
  • [Y页面:人像视图,使用for-each循环覆盖项B(这是我不知道该怎么做,如何从横向变为纵向)生成]
    <xsl:for-each select="itemsA">
    ...printed stuff...
    </xsl:for-each>
    <fo:block break-before="page">
    <xsl:for-each select="itemsB">
    ...printed stuff...
    </xsl:for-each>
xsl-fo
1个回答
0
投票
  1. 单独制作一个fo:page-sequence-master(如果左右页面之间没有变化,则为fo:simple-page-master,等等。]
  2. fo:page-sequence-master移至每个xsl:for-each内,并且fo:page-sequence-master指向相应的fo:page-sequence-master(或`fo:simple-page-master)。

即:]]

<xsl:for-each select="itemsA">
  <fo:page-sequence master-reference="landscape">
    ...printed stuff...
  </fo:page-sequence>
</xsl:for-each>
<xsl:for-each select="itemsB">
  <fo:page-sequence master-reference="portrait">
    ...printed stuff...
  </fo:page-sequence>
</xsl:for-each>

您不需要<fo:block break-before="page">,因为fo:page-sequence总是生成一个新的页面序列。

© www.soinside.com 2019 - 2024. All rights reserved.