【问题标题】:How to detect the last page of the document?如何检测文档的最后一页?
【发布时间】:2012-11-08 23:37:18
【问题描述】:

我使用 FOP 从 xml 文件创建 pdf 文件。 我想在 pdf 的最后一页显示一些内容。 问题是我不知道显示内容需要多少页,所以我怎么知道我在实际的最后一页上? (每个page-sequence可以根据内容的大小生成1+个文档页面)

谢谢。

【问题讨论】:

  • 您正在使用 XSLT 从 XML 创建 XSL-FO 对吧?您需要知道总页数还是只在最后一页显示一些内容?
  • 我只需要在最后一页显示一些东西,这意味着我需要能够做一个 显示一些东西.
  • 您想在文档内显示内容,还是在页眉/页脚(即 fo:static-content)中显示内容?

标签: xsl-fo apache-fop


【解决方案1】:

您可以为一般页面布局以及页眉和页脚指定条件页面母版 (fo:static-content): http://www.w3.org/TR/xsl/#page-position

用法:

1.) 在您的 fo:layout-master-set 中,定义您想要拥有的不同页面母版。例如,一个普通的页面母版和一个用于应该不同的最后一页。

普通页面母版示例:

<fo:simple-page-master master-name="page-master-161302528-normal"
    margin-left="2cm" margin-right="2cm" page-height="297mm"
    page-width="210mm">
    <fo:region-body margin-top="3.5cm" margin-bottom="41mm"
        column-count="1" column-gap="0.50in" />
    <fo:region-before region-name="normal-header"
                    overflow="visible" extent="2cm" />
    <fo:region-after region-name="normal-footer"
                    overflow="visible" extent="40mm" precedence="true" />
</fo:simple-page-master>

2.) 在 fo:layout-master-set 中定义一个 fo:page-sequence-master - 在此处添加条件:

<fo:page-sequence-master master-name="page-master-161302528">
    <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference master-reference="page-master-161302528-last" page-position="last"/>
            <fo:conditional-page-master-reference master-reference="page-master-161302528-normal" />
    </fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>

3.) 在您的文档中,为您定义的 fo 元素(fo:static-content 和 fo:page-sequence)提供主参考 - 如果相应的主元素处于活动状态,则应呈现相应的元素。 fo:static-content 元素必须根据上面的 fo:simple-page-master 将 region-name 命名为 flow-name 属性。

例子:

<fo:page-sequence force-page-count="no-force"
                    master-reference="page-master-161302528" initial-page-number="auto"
                    format="1">
    <fo:static-content flow-name="normal-header">...</fo:static-content>
</fo:page-sequence>

在这个整体示例中,特定页面页眉和页脚的选择是通过与普通页眉/页脚(例如“normal-header”)和最后一页页眉/页脚(例如“最后一页页眉”)。

【讨论】:

  • 对不起,我需要在这里详细说明。稍后我将完成示例。
  • 当时我使用了一个工具 (altova.com/stylevision.html),它自动为我创造了魔法。我必须弄清楚生成的代码。
猜你喜欢
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
相关资源
最近更新 更多