У меня есть документ с некоторым содержимым (таблица, содержащая один или несколько адресов) внизу последней страницы. До сих пор таблица была стандартного размера, поэтому я мог вставить таблицу в нижний колонтитул и прикрепить этот нижний колонтитул к последней странице:
<fo:page-sequence-master master-name="leaflet">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference page-position="first" master-reference="page_first_leaflet"/>
<fo:conditional-page-master-reference page-position="last" master-reference="page_last_leaflet"/>
<fo:conditional-page-master-reference master-reference="page_even_2" odd-or-even="even"/>
<fo:conditional-page-master-reference master-reference="page_odd <fo:flow flow-name="body">
<xsl:apply-templates/><!--normal chapter content is placed here-->
<fo:block>
<fo:footnote><fo:inline color="white">1</fo:inline><!--footnote number is not visible-->
<fo:footnote-body>
<fo:block>
<fo:table>
<fo:table-column column-width="20mm" column-number="1"/>
<fo:table-column column-width="200mm" column-number="2"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<fo:block>
<xsl:apply-templates select="table[1]"/><!--table that contains the addresses-->
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:footnote-body>
</fo:footnote>
</fo:block>
</fo:flow>
leaflet" odd-or-even="odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
Это хорошо работает, когда таблица имеет предсказуемый размер: я один раз установил размер нижнего колонтитула моей последней страницы, и все готово.
Но теперь есть просьба сделать размер стола переменным (от 5 до 15 см). Если я установлю нижний колонтитул шириной 15 см, я потеряю много места. Поэтому я хочу установить размер нижнего колонтитула динамически.
У меня нет способа прочитать высоту таблицы из XML-документа: высота ячеек по умолчанию равна 0, что означает «сделать ячейку достаточно большой, чтобы содержимое соответствовало ей». ". Так что я больше не могу поместить эту таблицу в нижний колонтитул.
Следующей моей мыслью было вставить таблицу в конец области тела. Это можно сделать с помощью конструкции сноски. Когда я помещаю сноску в конец содержимого документа, это помещает таблицу на ту же страницу, что и последний текст в документе.
<fo:flow flow-name="body">
<xsl:apply-templates/><!--normal chapter content is placed here-->
<fo:block>
<fo:footnote><fo:inline color="white">1</fo:inline><!--footnote number is not visible-->
<fo:footnote-body>
<fo:block>
<fo:table>
<fo:table-column column-width="20mm" column-number="1"/>
<fo:table-column column-width="200mm" column-number="2"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<fo:block>
<xsl:apply-templates select="table[1]"/><!--table that contains the addresses-->
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:footnote-body>
</fo:footnote>
</fo:block>
</fo:flow>
К сожалению, количество страниц должно быть четным, поэтому иногда после конца содержимого документа добавляется пустая страница:
<xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
Итак, если мой контент состоит из 3 страниц, таблица адресов заканчивается внизу страницы 3. Но мне нужно, чтобы она была на странице 4. Этот подход работает, только если контент заканчивается на четной странице И таблица помещается в пространстве осталось.
Есть ли другой подход, который я мог бы использовать, чтобы получить блок переменного размера внизу последней страницы моего документа?