XSLFO初始页面编号插入空白页面

use*_*889 4 xsl-fo

我有三个页面序列来处理三种不同类型的页面:封面页,内容表之前的一系列页面,以及目录之后的一系列页面.每个页面序列都有一些独特的属性.例如,封面页没有页眉或页脚,TOC之前的页面是小写罗马数字的数字,TOC之后的页面用阿拉伯数字编号.在"TOC之后"序列的情况下,我希望页码以"1"开头.为此,我将initial-page-number属性设置为"1":

<fo:page-sequence master-reference="my-sequence" format="1" initial-page-number="1">
Run Code Online (Sandbox Code Playgroud)

这很有效,因为该序列的第一页显示的页码为"1".但是,如果该序列的第一页将落在偶数页上,则插入自动空白页以使内容落在奇数页上.我不希望这种情况发生.无论内容是从奇数页还是偶数页开始,我希望页码为"1",我不希望插入空白页.

有关如何实现这一目标的任何想法?看起来它应该是非常简单的,但我还没有找到一种方法来获得我想要的结果.任何帮助将不胜感激!

谢谢!

And*_*ril 10

这里的技巧是问题出现在有2个已<fo:page-sequence>定义的情况下,你将第二个设置为初始数字1,它落在偶数页面上; 通常奇数页码位于偶数页面的相对侧,因此解析器将空白页面添加到第一页面序列以使编号系统保持有序.

要覆盖此行为,您需要添加force-page-count="no-force"到第一个序列,

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="my-master">
            <fo:region-body/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="my-master" force-page-count="no-force">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>First Sequence</fo:block>
        </fo:flow>
    </fo:page-sequence>
    <fo:page-sequence master-reference="my-master" initial-page-number="1">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>Second sequence</fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>
Run Code Online (Sandbox Code Playgroud)


use*_*889 5

这对我有用.在前一节(在本例中,"在TOC之前")中,我添加了以下属性:force-page-count ="no-force".这导致下一部分在数字为"1"的偶数页面上开始.这是完整的一行:

<fo:page-sequence master-reference="my-sequence" format="i" force-page-count="no-force">
Run Code Online (Sandbox Code Playgroud)