如何避免不需要的空白页面

问题描述 投票:0回答:1

以下 FO 代码是通过 XSL 转换创建的。结果应是包含多个页面的长 PDF。第 1 页的内容可能会溢出到下一页。可能需要特意添加另一个页面(本例中为第 2 页,共 2 页)。当我通过 FO 解释器运行示例时(我尝试了 Apache 的 FOP 以及 Compart 的 DocBridgeMill),我得到了这个 PDF:

  • “第 1 页,共 1 页”
  • 空白页
  • “第 1 页,共 2 页”
  • “第 2 页,共 2 页”

我想摆脱空白页面。

<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master 
            margin-top="5mm" margin-left="10mm"
            page-width="210mm" page-height="50mm" master-name="FirstPage">
            <fo:region-body />
        </fo:simple-page-master>
        <fo:simple-page-master 
            margin-top="10mm" margin-left="10mm"
            page-width="210mm" page-height="50mm" master-name="OtherPage">
            <fo:region-body />
        </fo:simple-page-master>
        <fo:page-sequence-master
            master-name="PageSequence">
            <fo:single-page-master-reference
                master-reference="FirstPage" />
            <fo:repeatable-page-master-reference
                master-reference="OtherPage" />
        </fo:page-sequence-master>
        <fo:page-sequence-master
            master-name="FollowingPages">
            <fo:repeatable-page-master-reference
                master-reference="OtherPage" />
        </fo:page-sequence-master>
    </fo:layout-master-set>
    <fo:page-sequence initial-page-number="1"
        master-reference="PageSequence">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                Page
                <fo:page-number />
                of
                <fo:page-number-citation
                    ref-id="5DAF3593E443DF58C1258934005BD76B" />
            </fo:block>
            <fo:block id="5DAF3593E443DF58C1258934005BD76B" />
        </fo:flow>
    </fo:page-sequence>
    <fo:page-sequence initial-page-number="1"
        master-reference="PageSequence">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                Page
                <fo:page-number />
                of
                <fo:page-number-citation
                    ref-id="0C36B169CFBCD3DFC12589360067818E" />
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
    <fo:page-sequence master-reference="FollowingPages">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                Page
                <fo:page-number />
                of
                <fo:page-number-citation
                    ref-id="0C36B169CFBCD3DFC12589360067818E" />
            </fo:block>
            <fo:block id="0C36B169CFBCD3DFC12589360067818E" />
        </fo:flow>
    </fo:page-sequence>
</fo:root>
xsl-fo
1个回答
0
投票

XSL-FO 的编写假设是奇数页位于两页跨页的正面(对于我们来说是左侧),而偶数页位于反面(背面或右侧)。

第二个

initial-page-number="1"
上的
fo:page-sequence
导致格式化程序在第一个页面序列之后发出空白页面,以便第二个页面序列按照请求从右页开始(但是无意中)。请参阅https://www.w3.org/TR/xsl11/#initial-page-number


如果您使用 Antenna House Formatter(并将

xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
添加到 XSL-FO),您可以使用
axf:origin-id
扩展来获得您想要的效果。请参阅https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#axf.origin-id

    <fo:page-sequence initial-page-number="1" id="seq1"
        master-reference="PageSequence">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                Page
                <fo:page-number />
                of
                <fo:page-number-citation-last
                    ref-id="seq1" />
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
    <fo:page-sequence id="seq2"
        master-reference="PageSequence">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                Page
                <fo:page-number axf:origin-id="seq2" />
                of
                <fo:page-number-citation axf:origin-id="seq2"
                    ref-id="seq-last" />
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
    <fo:page-sequence master-reference="FollowingPages"
              id="seq-last">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>
                Page
                <fo:page-number axf:origin-id="seq2" />
                of
                <fo:page-number-citation-last axf:origin-id="seq2"
                    ref-id="seq-last" />
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
© www.soinside.com 2019 - 2024. All rights reserved.