如何停止计算空白页 XSLT/XSLFO



我有一个从第 1 页开始并继续的布局。现在的问题是它也计算空白页。有没有办法强制停止空白页计数。

电流输出

第 1 页

(非空白( - 第 1 页,共 6 页

第2页(空白(

第 3 页

(非空白( - 第 3 页,共 6 页

第4页(空白(

第 5 页

(非空白( - 第 5 页,共 6 页

第6页(空白(

预期产出:

第 1 页

(非空白( - 第 1 页,共 3 页

第2页(空白(

第 3 页

(非空白( - 第 2 页,共 3 页

第4页(空白(

第 5 页(非空白( - 第 3 页,共 3 页

第6页(空白(

法典

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:template match="/">
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
        <fo:layout-master-set>
            <fo:simple-page-master margin-left="0.5in" margin-top="0.5in" margin-right="0.5in" margin-bottom="0.5in" page-height="11in" page-width="8.5in" master-name="PageFront">
                <fo:region-body region-name="letterPageBody" margin-left="0pt" margin-top="3.5in" margin-right="0pt" margin-bottom="1in" />
                <fo:region-before extent="4in" region-name="FirstPageHeader" precedence="true" />
                <fo:region-after extent="0.8in" region-name="letterPageFooter" precedence="true" background-color="yellow" />
            </fo:simple-page-master>
            <fo:simple-page-master margin-left="0.5in" margin-top="0.5in" margin-right="0.5in" margin-bottom="0.5in" page-height="11in" page-width="8.5in" xmlns:fo="http://www.w3.org/1999/XSL/Format" master-name="Blank">
                <fo:region-body margin-left="0pt" margin-top="3.5in" margin-right="0pt" margin-bottom="1in" region-name="letterPageBody2" />
            </fo:simple-page-master>
            <fo:page-sequence-master master-name="LetterPages">
                <fo:repeatable-page-master-alternatives>
                    <fo:conditional-page-master-reference master-reference="PageFront" page-position="first" odd-or-even="odd" />
                    <fo:conditional-page-master-reference master-reference="Blank" odd-or-even="even" />
                    <fo:conditional-page-master-reference master-reference="PageFront" odd-or-even="odd" />
                </fo:repeatable-page-master-alternatives>
            </fo:page-sequence-master>
        </fo:layout-master-set>
        <fo:page-sequence force-page-count="auto" initial-page-number="auto" master-reference="LetterPages">
            <fo:static-content flow-name="letterPageFooter">
                <fo:block>
                    <xsl:apply-templates select="//region[@name='Footer']" />
                </fo:block>
            </fo:static-content>
            <fo:static-content flow-name="FirstPageHeader">
                <fo:table width="100%" table-layout="fixed">
                    <fo:table-body>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block background-color="#67D217">
                                    <xsl:apply-templates select="//region[@name='address']" />
                                </fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block text-align="center">Page <fo:page-number /> of <fo:page-number-citation ref-id="LastPage" /></fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:static-content>
            <fo:flow flow-name="letterPageBody">
                <fo:block background-color="#F1F1F1">
                    <xsl:apply-templates select="//region[@name='Body']" />
                </fo:block>
                <fo:block id="LastPage" />
            </fo:flow>
        </fo:page-sequence>
    </fo:root>
 </xsl:template>
</xsl:stylesheet>

上面的输出是(假设有两个页面要显示(

首页(非空白( 第 1 页,共 3 页

第二页(空白(

第三页(非空白( 第 3 页,共 3 页

编辑

这是使用上述xsl的文档(这是一个基于Apache-FOP编写的自定义工具(

<?xml version="1.0" encoding="utf-8"?>
<docdef version="5.1"  numbering-format="1">
<scriptlinks />
<script language="JavaScript" />
<interview-data />
<template-edition channel="2" template="">
    <edition-content>
        <sectionmap section="Body" region="Body" />
        <sectionmap section="Footer" region="Footer" />
        <sectionmap section="Header" region="address" />
    </edition-content>
</template-edition>
<section id="" name="Document">
    <section id="" name="Body">
        <frag id="" name="new text fragment" no-match="error" type="text">
            <edition id="" name="new text fragment" withdrawn="False">
                <edition-content>
                    <p xml:space="preserve">hen it is 5°F outside?</p>
                    <p xml:space="preserve">Wearing a cape during combat?</p>
                    <p xml:space="preserve">What's between the finite and the infinite?</p>
                    <p xml:space="preserve">What was C-3PO talking about when he said, “That’s funny, the damage doesn’t look as bad from out here.”</p>
                    <p xml:space="preserve">Intersperse lines from two files</p>
                    <p xml:space="preserve">How to find an employer who is NOT child friendly?</p>
                    <p xml:space="preserve">Why does Binary exist?</p>
                    <p xml:space="preserve">How many layers are too many layers in ArcMap?</p>
                    <p xml:space="preserve">Quinean Regex Tester</p>
                    <p xml:space="preserve">Is it safe to post one's research on web sites like Math Overflow for "peer review" before submitting to a journal?</p>
                    <p xml:space="preserve">Does a mourner tear one garment, or every garment he wears for a period of time?</p>
                    <p xml:space="preserve">Particle between city and prefecture?</p>
                    <p xml:space="preserve">Surrounded Countries</p>
                    <p xml:space="preserve">Why would security cover things like natural disasters?</p>
                    <p xml:space="preserve">How do exit interviews benefit the company?</p>
                    <p xml:space="preserve">Mystery 1970's Sci Fi Novel titled "Planet of the Gworfs" (or perhaps planet of the "Gwarfs")</p>
                    <p xml:space="preserve">Getting a US minor passport when you can't find one parent</p>
                    <p xml:space="preserve">Open source software capable of open Sketch files</p>
                    <p xml:space="preserve">Is it possible to spread holy water on a weapon like you do with poison?</p>
                    <p xml:space="preserve">more hot questions</p>
                    <p xml:space="preserve">question feed</p>
                    <p xml:space="preserve">tour help blog chat data legal privacy policy work here advertising info mobile contact us feedback</p>
                    <p xml:space="preserve">TECHNOLOGY    LIFE / ARTS    CULTURE / RECREATION    SCIENCE    OTHER</p>
                    <p xml:space="preserve">Stack Overflow</p>
                    <p xml:space="preserve">Server Fault</p>
                    <p xml:space="preserve">Super User</p>
                    <p xml:space="preserve">Web Applications</p>
                    <p xml:space="preserve">Ask Ubuntu</p>
                    <p xml:space="preserve">Webmasters</p>
                </edition-content>
            </edition>
        </frag>
    </section>
    <section id="" name="Header">
        <frag id="" name="new text fragment" no-match="error" type="text">
            <edition id="" name="new text fragment" withdrawn="False">
                <edition-content>
                    <p xml:space="preserve">Page <page-numbering value="current.page" /> of <page-numbering value="total.pages" /></p>
                </edition-content>
            </edition>
        </frag>
    </section>
    <section id="" name="Footer">
        <frag id="" name="new text fragment" no-match="error" type="text">
            <edition id="" name="new text fragment" withdrawn="False">
                <edition-content>
                    <p xml:space="preserve">Type your text here...</p>
                </edition-content>
            </edition>
        </frag>
    </section>
</section>

在上面

<template-edition channel="2" template="">
<edition-content>
    <sectionmap section="Body" region="Body" />
    <sectionmap section="Footer" region="Footer" />
    <sectionmap section="Header" region="address" />
</edition-content>

例:"标头"映射到 XSL 区域"地址"(与其他区域相同(

如果您的所有页面都来自单个fo:page-sequence,则没有直接的方法可以实现所需的输出。

在 XSL 建议中,fo:page-number 的值定义为页面的作品集编号特征,该特征根据以下规则计算:

  1. fo:page-sequence返回的第一页上的作品集编号特征的值被约束为等于initial-page-number特征的值。
  2. 后续页面上的作品集编号特征的值被限制为比前一页上的值大 1。

换句话说,您可以决定从page-sequence派生的第一页的初始页号,但连续的页会得到连续的页码(无论它们是否显示在页面中(。

这是一般的答案;在你的特定情况下,可能有间接的方法可以得到你想要的东西:

    可以将
  • 您的内容分成不同的page-sequence,以便每个生成一个完整的页面和一个空白页面(设置force-page-count="even"并在第二个page-sequence上使用initial-page-number="2",依此类推......
  • 通过两步方法,您可以使用 FOP 的中间格式功能来

    1. 创建没有空白页的输出,具有所需的页码
    2. 在编号页之间插入空白页

(披露:我是一名FOP开发人员,尽管近年来不是很活跃(

最新更新