在XSL-FO中翻页?

时间:2014-12-03 14:09:54

标签: xml xslt xslt-1.0 xsl-fo apache-fop

我正在寻找一种方法来强制我的文档中的流程跳过页面。 到目前为止我所拥有的(布局):

<fo:layout-master-set>
                    <fo:page-sequence-master master-name="document">
                        <fo:repeatable-page-master-alternatives maximum-repeats="2">
                            <fo:conditional-page-master-reference master-reference="letter" odd-or-even="odd"/>
                            <fo:conditional-page-master-reference master-reference="back-special" odd-or-even="even"/>
                        </fo:repeatable-page-master-alternatives>
                        <fo:repeatable-page-master-alternatives>
                            <fo:conditional-page-master-reference master-reference="continuation" odd-or-even="odd"/>
                            <fo:conditional-page-master-reference master-reference="back" odd-or-even="even"/>
                        </fo:repeatable-page-master-alternatives>
                    </fo:page-sequence-master>
                        <fo:simple-page-master master-name="letter" page-height="32.0cm" page-width="22.5cm" margin-top="12.2cm" margin-bottom="3cm" margin-left="2.3cm" margin-right="0.75cm">
                            <fo:region-body/>
                            <fo:region-before region-name="omr" extent="29.7cm"/>
                        </fo:simple-page-master>
                        <fo:simple-page-master master-name="back" page-height="32.0cm" page-width="22.5cm" margin-top="5.2cm" margin-bottom="1.8cm" margin-left="2.3cm" margin-right="2.0cm"  >
                            <fo:region-body/>
                            <fo:region-before region-name="omr-rest" extent="29.7cm"/>
                        </fo:simple-page-master>
                        <fo:simple-page-master master-name="continuation" page-height="32.0cm" page-width="22.5cm" margin-top="5.2cm" margin-bottom="1.8cm" margin-left="2.3cm" margin-right="2.0cm"  >
                            <fo:region-body/>
                            <fo:region-before region-name="conts" extent="29.7cm"/>
                        </fo:simple-page-master>
                        <fo:simple-page-master master-name="back-special" page-height="32cm" page-width="22.5cm" margin-top="5cm" margin-bottom="25cm" margin-left="2.5cm" margin-right="2.5cm">
                            <fo:region-body/>
                            <fo:region-before region-name="special" extent="29.7cm"/>
                        </fo:simple-page-master>
                        <fo:simple-page-master master-name="separator" page-height="32.0cm" page-width="22.5cm" margin-top="2.15cm" margin-bottom="1.15cm" margin-left="1.75cm" margin-right="0.75cm">
                            <fo:region-body/>
                        </fo:simple-page-master>
                </fo:layout-master-set>

然后在流程中引用外部数据源的表:

                    <fo:table>
                    <fo:table-column column-width="1.8cm"/>
                    <fo:table-column column-width="5cm"/>
                    <fo:table-column column-width="3.2cm"/>
                    <fo:table-column column-width="3.8cm"/>
                    <fo:table-column column-width="4.0cm"/>
                     <fo:table-body space-after="1cm" space-before="1cm">
                       <xsl:for-each select="rems/rem">
                        <fo:table-row height="0.8cm" keep-together.within-column="always">
                            <fo:table-cell>
                                <fo:block font-family="Helvetica" font-size="8pt" text-align="left" ><xsl:value-of select="rem3"/></fo:block> <!--date-->
                            </fo:table-cell>
                            <fo:table-cell>
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="left" ><xsl:value-of select="rem4"/></fo:block>  <!--details 1-->
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="left" ><xsl:value-of select="rem5"/></fo:block>  <!--details 2-->
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="left" ><xsl:value-of select="rem6"/></fo:block>  <!--details 3-->
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="left" ><xsl:value-of select="rem7"/></fo:block>  <!--details 4-->
                            </fo:table-cell>
                            <fo:table-cell>
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="right" ><xsl:value-of select="rem8"/></fo:block> <!--payments-->
                            </fo:table-cell>
                            <fo:table-cell>
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="right" ><xsl:value-of select="rem9"/></fo:block>  <!--receipts-->
                            </fo:table-cell>
                            <fo:table-cell>
                               <fo:block font-family="Helvetica" font-size="8pt" text-align="right" ><xsl:value-of select="rem10"/></fo:block>  <!--balance-->
                            </fo:table-cell>
                        </fo:table-row>
                        </xsl:for-each>
                    </fo:table-body>                        
                </fo:table>

我想要实现的是一个主要文档,在表格的开头,下一页(后面特殊)是空白的(带有整页图形),以及完全跳过此页面的流程,继续继续页面之前(第3页'继续')。

如果我要增加顶部&amp; “背面特殊”的底部边缘比它们更多,我得到如下错误: “UnsupportedOperationException:不知道如何在positionNonLeafPos重启:26”......等等

我读过它是known issue in FOP,所以我只是想知道是否有人有任何建议来解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以通过为主页的Body区域使用不同的区域名称来实现此目的,请参阅此问题:Place text on odd pages only, skip even pages