使用内容处理第一页或最后一页

时间:2014-02-28 16:18:56

标签: xsl-fo

我正在生成像标准印刷书籍一样设置的文档,每一章都以正面(右手和奇数)页面开头。第一页有自己的页面主页。最近我被要求特别对待最后一页。我可以通过强制前一页面序列的页数(我一直在做的事情),或者通过在章节本身上使用break-before来实现右手启动。不幸的是,任何一种技术有时会在序列中添加一个空白页面,该序列成为该序列的实际最后一页或第一页(这意味着我的上一页或第一页内容没有得到正确的页面主页)。我认为有一种方法可以设置条件页面主引用来允许这样做,因为我不知道章节什么时候需要一个空白页面,什么时候不需要。

我的想法是我无法在章节的页面序列中添加页面,而是在每章之间创建页面序列,这些页面序列将为左侧页面定义一个空白的条件页面主页。不幸的是,似乎没有条件时,格式化程序(Antenna House 6.0)无论如何输出一个空白页。

所以,我的问题是,有没有人知道有条件地生成页面的方法,允许在某些情况下,不会生成页面?我不知道在这里发布什么代码(如果有的话),但我很乐意发布任何可以帮助我得到答案的代码。

可能有用的一段代码:我的空白页面 - 序列 - 主。

<fo:page-sequence-master master-name="blank-verso">
    <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference master-reference="blankpage" odd-or-even="even" maximum-repeats="1"/>
    </fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>

2 个答案:

答案 0 :(得分:1)

我想我用最大重复次数解决了这个问题。我使用的方法如下:

  <fo:page-sequence-master master-name="main">
     <fo:repeatable-page-master-alternatives maximum-repeats="2">
        <fo:conditional-page-master-reference master-reference="blankpage"
                                              blank-or-not-blank="blank"
                                              page-position="first"/>
        <fo:conditional-page-master-reference master-reference="first-main-recto"
                                              odd-or-even="odd"
                                              page-position="any"/>
        <fo:conditional-page-master-reference master-reference="body-main-verso"
                                              odd-or-even="even"
                                              page-position="rest"/>
        <fo:conditional-page-master-reference master-reference="last-main-verso"
                                              odd-or-even="even"
                                              page-position="last"/>
     </fo:repeatable-page-master-alternatives>
     <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference master-reference="blankpage" blank-or-not-blank="blank"/>
        <fo:conditional-page-master-reference master-reference="last-main-verso"
                                              odd-or-even="even"
                                              page-position="last"/>
        <fo:conditional-page-master-reference master-reference="last-main-recto"
                                              odd-or-even="odd"
                                              page-position="last"/>
        <fo:conditional-page-master-reference master-reference="first-main-recto"
                                              odd-or-even="even"
                                              page-position="first"/>
        <fo:conditional-page-master-reference master-reference="first-main-recto"
                                              odd-or-even="odd"
                                              page-position="first"/>
        <fo:conditional-page-master-reference master-reference="body-main-verso" odd-or-even="even"/>
        <fo:conditional-page-master-reference master-reference="body-main-recto" odd-or-even="odd"/>
     </fo:repeatable-page-master-alternatives>
  </fo:page-sequence-master>

在我的simple-page-masters部分中根据需要定义last-main和first-main页面主页,并且我的章节定义为必要时以空白页开头(而不是结束于one)和force-page-count在整个过程中被设置为no-force。

我实际上可能有比我需要更多的条件,但我在安全方面犯了错误。我们的想法是,第一个可重复页面主页替代品最多将使用两次。如果我的章节在空白页面上开始,那么'空白'页面主页将在第一页(空白)页面上使用,然后我的'第一页'主页将在第二页上使用(这是第一页内容)。如果我的章节没有在空白页面上开始,将使用“第一个”页面主页,然后是“正文”页面主页。 “最后一页”主页也是定义的,在2页章节的奇数情况下。在第二页之后,第二个可重复页面 - 主要 - 替代品开始,在本章的其余部分应用预期的主人。似乎工作并认为它可能对其他人有用,因为“最大重复次数”似乎不是大量讨论的主题。

答案 1 :(得分:0)

您可以在conditional-page-master-reference中设置页面条件。例如:

<fo:page-sequence-master master-name="recto-verso-document">
    <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference odd-or-even="even" master-reference="page-even" 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="first-page-odd"/>
        <fo:conditional-page-master-reference blank-or-not-blank="not-blank" odd-or-even="odd" page-position="last" master-reference="last-page-odd"/>
        <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="blank" master-reference="alternate-blank"/>
    </fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>

设置page-position="last"可能就是您所需要的。