Apache FOP - XSL FO - 计数故意留下空白页

Apache FOP - XSL FO - count Intentionally left blank pages

我的 XSL:

<fo:layout-master-set>
        <fo:simple-page-master master-name="normal" page-height="210mm" page-width="148mm"> 
            <fo:region-body region-name="xsl-region-body" margin="28mm 2mm 10mm 8mm" />
            <fo:region-before region-name="xsl-region-before"/>
            <fo:region-after region-name="xsl-region-after" extent="12mm"/>
        </fo:simple-page-master>
        <fo:simple-page-master master-name="blank" page-height="210mm" page-width="148mm">
            <fo:region-body/>
            <fo:region-before region-name="header-blank" extent="210mm"/>
            <fo:region-after region-name="xsl-region-after" extent="12mm"/>
        </fo:simple-page-master>
        <fo:page-sequence-master master-name="document">
            <fo:repeatable-page-master-alternatives>
                <fo:conditional-page-master-reference blank-or-not-blank="not-blank" master-reference="normal"/>
                <fo:conditional-page-master-reference blank-or-not-blank="blank" master-reference="blank"/>
            </fo:repeatable-page-master-alternatives>
        </fo:page-sequence-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="document" force-page-count="end-on-even">   
    <fo:static-content flow-name="xsl-region-before">
        <fo:block font-weight="normal" font-family="Helvetica" text-align="center" margin="6mm 2mm 0mm 8mm">
        </fo:block>
    </fo:static-content>

    <fo:static-content flow-name="xsl-region-after">
        <fo:block font-size="9pt" font-weight="normal" font-family="Helvetica" margin="0mm 2mm 0mm 8mm">
            P <fo:page-number/>/<fo:page-number-citation ref-id="TheVeryLastPage"/>
        </fo:block>
    </fo:static-content>

    <fo:static-content flow-name="header-blank">
        <fo:block text-align-last="center" font-size="9.5" margin-top="75mm">
            Intentionally left blank
        </fo:block>
    </fo:static-content>

    <fo:flow flow-name="xsl-region-body">
        <fo:block id="TheVeryLastPage"> </fo:block>
    </fo:flow>

</fo:page-sequence>

输出: 第一页:P 1/1 第二页:P 2/1

期望的输出: 第一页:P 1/2 第二页:P 2/2

如何将故意留下的空白页计入我的页数?

任何帮助将不胜感激。

它不能那样工作,因为带有 id TheVeryLastPage 的块不会出现在自动生成的最后一页中。只有在不需要生成附加空白页(故意留空)时才会生成正确的编号。

Apache FOP,不幸的是,有时它在页码检索方面存在错误或受限(特别是,如果您使用 <fo:page-number-citation-last ref-id=""> 这可能对您的情况有所帮助,例如通过在 <fo:block> 用于显示页码,它应该可以正常工作 - 它实际上可以用于 Antenna House 等商业渲染器,因为它能够执行 2-pass 生成过程。

唯一的方法是使用 FOP,如下所示:

  1. <fo:page-sequence>
  2. 上设置 id
  3. 使用 <fo:page-number-citation-last>

您修改后的代码将如下所示:

<fo:page-sequence master-reference="document" force-page-count="end-on-even" id="TheVeryLastPage">   
    <fo:static-content flow-name="xsl-region-before">
        <fo:block font-weight="normal" font-family="Helvetica" text-align="center" margin="6mm 2mm 0mm 8mm">
        </fo:block>
    </fo:static-content>

    <fo:static-content flow-name="xsl-region-after">
        <fo:block font-size="9pt" font-weight="normal" font-family="Helvetica" margin="0mm 2mm 0mm 8mm">
            P <fo:page-number/>/<fo:page-number-citation-last ref-id="TheVeryLastPage" />
        </fo:block>
    </fo:static-content>

    <fo:static-content flow-name="header-blank">
        <fo:block text-align-last="center" font-size="9.5" margin-top="75mm">
            Intentionally left blank
            <!--fo:block id="TheVeryLastPage" /-->
        </fo:block>
    </fo:static-content>

    <fo:flow flow-name="xsl-region-body">
         <fo:block>Thy hand, belinda, darkness shades me.</fo:block>
         <fo:block>On thy bosom let me rest.</fo:block>
         <fo:block>More I would, but death invades me.</fo:block>
         <fo:block>Death is now a welcome guest.</fo:block>

         <fo:block>When I am laid in earth, may my wrongs create</fo:block>
         <fo:block>No trouble in thy breast.</fo:block>
         <fo:block>Remember me, but ah! forget my fate.</fo:block>
    </fo:flow>
</fo:page-sequence>