XSL:FO 仅保留第一页的标题 [英] XSL:FO Keep the header only for first page

查看:19
本文介绍了XSL:FO 仅保留第一页的标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在只为第一页保留region-before"时遇到问题.查看我的代码:

I am having a problem to keep "region-before" only for first page. See my code:

    <fo:layout-master-set>
            <fo:simple-page-master master-name="first" margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.75cm" page-width="21cm" page-height="29.7cm">

                <fo:region-body region-name="xsl-region-body" margin-top="{$extra-body-margin-top+15.6-$header-margin}cm" margin-bottom="3.5cm" />
                <fo:region-before region-name="xsl-region-before"  extent="17cm" overflow="hidden" />
                <fo:region-after region-name="xsl-region-after" extent="2.8cm" overflow="hidden" />
            </fo:simple-page-master>
            <fo:page-sequence-master master-name="psmA">
                <fo:repeatable-page-master-alternatives>
                    <fo:conditional-page-master-reference master-reference="first" page-position="any" />
                </fo:repeatable-page-master-alternatives>
            </fo:page-sequence-master>

    </fo:layout-master-set>

如果我更改了 page-position="first" 并且我的 region-body 超出了第一页,则会出现错误.我的想法是将 region-before 仅保留在第一页上,但 region-body 和 region-footer 跟随下一页.有没有容易玩我的代码的?

If I change the page-position="first" and my region-body exceeds the first page I got error. My idea is to keep the region-before only on the first page but the region-body and region-footer follow the next pages. Is any easy one to play with my code?

推荐答案

  1. 设置第二个没有 fo:region-beforefo:simple-page-master.
  2. 添加第二个 fo:conditional-page-master-reference 以便 first 页面母版仅用于第一页(使用 page-position="first") 而另一个页面母版用于其余部分(使用 page-position="any").
  1. Set up a second fo:simple-page-master that does not have an fo:region-before.
  2. Add a second fo:conditional-page-master-reference so that the first page master is used on the first page only (using page-position="first") and the other page master is used for the rest (using page-position="any").

这是有效的,因为格式化程序使用其所有条件都为真的第一个替代方案(请参阅 https://www.w3.org/TR/xsl11/#fo_repeatable-page-master-alternatives).这也是您将带有 page-position="any" 的那个放在最后的原因,因为该条件始终为真.

This works because the formatter uses the first alternative for which all its conditions are true (see https://www.w3.org/TR/xsl11/#fo_repeatable-page-master-alternatives). Which is also why you put the one with page-position="any" last, because that condition is always true.

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="first" margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.75cm" page-width="21cm" page-height="29.7cm">

      <fo:region-body region-name="xsl-region-body" margin-top="1cm" margin-bottom="3.5cm" />
      <fo:region-before region-name="xsl-region-before"  extent="17cm" overflow="hidden" />
      <fo:region-after region-name="xsl-region-after" extent="2.8cm" overflow="hidden" />
    </fo:simple-page-master>
    <fo:simple-page-master master-name="rest" margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.75cm" page-width="21cm" page-height="29.7cm">

      <fo:region-body region-name="xsl-region-body" margin-top="1cm" margin-bottom="3.5cm" />
    </fo:simple-page-master>
    <fo:page-sequence-master master-name="psmA">
      <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference master-reference="first" page-position="first" />
        <fo:conditional-page-master-reference master-reference="rest" page-position="any" />
      </fo:repeatable-page-master-alternatives>
    </fo:page-sequence-master>

  </fo:layout-master-set>

  <fo:page-sequence master-reference="psmA">
    <fo:static-content flow-name="xsl-region-before">
      <fo:block>before</fo:block>
    </fo:static-content>
    <fo:flow flow-name="xsl-region-body" font-size="12pt" line-height="11pt">
      <fo:block>content</fo:block>
      <fo:block break-before="page">more content</fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

这篇关于XSL:FO 仅保留第一页的标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆