Последний блок в теле потока внизу на последней странице - PullRequest
2 голосов
/ 20 марта 2019

Как можно выровнять последнее fo:block в fo:flow теле в нижней части последней страницы?

Я не имею в виду раздел нижнего колонтитула на каждой странице, это нормально, но я хочупоследний блок в теле потока внизу на последней странице.

Содержимое тела потока разнообразно, и я не знаю, какой будет высота этого последнего блока блока.

Можно ли как-то это сделать?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Если вы используете AH Formatter, вы можете сделать последний блок плавающим в нижней части страницы.


Возможно, вы сможете поместить последний блок в fo:block-container и установить абсолютноfo:block-container внизу страницы.


Вы можете поместить последний блок в нижний колонтитул, который появляется только на последней странице:

  • Сделать отдельный fo:simple-page-master только для последней страницы
  • Используйте fo:region-after с разницей master-name на этой странице
  • Укажите display-align="after" на fo:region-after, чтобы убедиться, что его содержимое отображаетсявнизу
  • В вашем fo:page-sequence-master используйте fo:repeatable-page-master-alternatives, который включает fo:conditional-page-master-reference в начале альтернативы с page-position="last" и который выбирает вашу мастер-страницу для последней страницы
  • В fo:page-sequence создайте fo:static-content с master-reference, который соответствует flow-name из xsl:region-after из fo:simple-page-master для последней страницы
  • Поместите содержимое последнего блока в этоfo:static-content
0 голосов
/ 22 марта 2019

Простой трюк, который должен работать (я успешно протестировал его с 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>
  • этот блок будет размещен на последней странице вместе с (хотя бы частью) предыдущего блока
  • оптимальное расстояние между ним и предыдущей строкой больше, чем высота области тела, но минимальное пространство намного меньше, поэтому его можно «сжать» (вы можете настроить минимальное значение в соответствии со своими предпочтениями)
  • В результате форматер поместит последний блок на странице как можно дальше от предыдущего блока, который находится внизу области тела
...