【问题标题】:Last block in flow body at the bottom on last page最后一页底部的流体中的最后一个块
【发布时间】:2019-03-20 20:40:04
【问题描述】:

如何让fo:flow 正文中的最后一个fo:block 与最后一页的底部对齐?

我不是指每一页的页脚部分,没关系,但我希望在最后一页的底部有流体中的最后一个块。

流体的内容多种多样,不知道最后一个block段的高度是多少。

有没有可能做点什么?

【问题讨论】:

标签: xml xsl-fo


【解决方案1】:

如果您使用的是 AH Formatter,您可以让最后一个块浮动到页面底部。


您可以将最后一个块放在fo:block-container 中,并将fo:block-container 绝对定位在页面底部。


您可以将最后一个块放在只出现在最后一页的页脚中:

  • 为最后一页单独创建fo:simple-page-master
  • 在该页面上使用 fo:region-after 和不同的 master-name
  • fo:region-after 上指定display-align="after" 以确保其内容显示在底部
  • 在您的 fo:page-sequence-master 中,使用包含 fo:conditional-page-master-referencefo:repeatable-page-master-alternatives 在具有 page-position="last" 的替代项中的早期,并为最后一页选择您的页面母版
  • fo:page-sequence 中,创建一个带有master-referencefo:static-content,与最后一页的xsl:region-afterflow-name 匹配
  • 将最后一个区块内容放入那个fo:static-content

【讨论】:

  • Thanx,但出了点问题(确定我的代码):) 是不是我正在使用 Ibex PDF Creator?
  • 请更新问题以包含显示问题的最小代码示例。到目前为止,在@Ifurini 和我之间,您已经为您的问题找到了五种可能的解决方案。
  • 我的代码在这里(我不能在这里插入 - 太长了):xmlgen.cz/tmp/last-block-bottom-last-page.fothanx
【解决方案2】:

一个应该有效的简单技巧(我使用 FOP 2.3 成功测试了它):

<fo:block keep-with-previous.within-page="always" 
    space-before.minimum="1cm" 
    space-before.optimum="30cm" 
    space-before.maximum="30cm">
    Text at the end of the last page
</fo:block>
  • 此块将与前面的块(至少一部分)放在最后一页
  • 它与上一行之间的最佳间距大于body region height,但最小间距要小很多,所以可以“挤压”(可以根据自己的喜好调整最小值)
  • 结果是格式化程序会将页面中的最后一个块放置在尽可能远离前一个块的位置,前一个块位于正文区域的底部

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 2016-01-31
    • 2017-12-27
    • 2019-04-04
    • 1970-01-01
    • 2011-06-30
    • 2011-12-23
    • 1970-01-01
    相关资源
    最近更新 更多