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,如下所示:
- 在
<fo:page-sequence>
上设置 id
- 使用
<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>
我的 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,如下所示:
- 在
<fo:page-sequence>
上设置 id
- 使用
<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>