2015-05-12 8 views
2

Я работаю с XSL-FO (обрабатывается с помощью Apache FOP).Как исправить нижний колонтитул внизу страницы в XSL FO?

Мой XSL код для таблиц выглядит следующим образом:

<!-- ... Some xsl fo code with data occupying 1/2 page ... --> 
<fo:table> 
    <fo:table-header> 
     Item Name 
    </fo:table-header> 
    <fo:table-footer> 
     Total: 
     <xsl:value-of select="total" /> 
    </fo:table-footer> 
    <fo:table-body> 
     <fo:table-row> 
     <xsl:value-of select="itemName" /> 
     </fo:table-row> 
    </fo:table-body> 
</fo:table> 

Я хочу иметь таблицы колонтитула в нижней части каждой страницы (я попытался с помощью fo:table-footer).

Я также хочу использовать сноску на страницах, следующих за первым: если содержание требует более одной страницы, мне нужна сноска "Continuation of previous page" после нижнего колонтитула.

Нижний колонтитул таблицы должен показывать общее значение только на последней странице (я имею в виду, если у меня есть 6 страниц содержимого таблицы на каждой странице, кроме последней должен иметь нижний колонтитул с общим значением как пустой и нижний колонтитул последней страницы со значением) ,

источник XML:

<itemDetail> 
    <itemName>Car1</itemName> 
    <itemName>Car2</itemName> 
    <itemName>Car3</itemName> 
    <itemName>Car4</itemName> 
    <itemName>Car5</itemName> 
    <itemName>Car6</itemName> 
    <itemName>Car7</itemName> 
    <itemName>Car8</itemName> 
    <itemName>Car9</itemName> 
    <itemName>Car10</itemName> 
    <itemName>Car11</itemName> 
    <itemName>Car12</itemName> 
    <itemName>Car13</itemName> 
    <itemName>Car14</itemName> 
    <itemName>Car15</itemName> 
    <itemName>Car16</itemName> 
    <itemName>Car17</itemName> 
    <itemName>Car18</itemName> 
    <itemName>Car19</itemName> 
    <itemName>Car20</itemName> 
</itemDetail> 
<total>20</total> 

Необходимый пример вывода страницы 1: Required sample output of page 1

Требуемая мощность образец Page 2: Required sample output of page 2

+0

Итак, вы хотите, чтобы «Всего» отображалось в нижней части каждой страницы, но отображалось «продолжение предыдущей страницы» вместо общего на странице, а затем общее отображение на последней странице документа? То есть вы этого не сделаете для нескольких таблиц в документе? – adam5990

+0

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

+0

Да Адам. На самом деле мне нужно общее значение только на последней странице (я проверил Если условие в нижнем колонтитуле стола, но не работает .. Любые предложения ??) –

ответ

1

После повторного чтения ваш вопрос, я бы сделал является. У вас должны быть шаблоны страниц для первого, последнего и последнего.

Это по двум причинам: (1) вы хотите, чтобы нижние колонтитулы внизу, и (2) многие продукты (включая FOP) не поддерживают маркер retrieve-table. Извлечение маркеров в строки таблицы очень проблематично для форматировщиков, особенно в том, что полученный контент имеет такой размер, что он заставляет таблицу переформатировать (например, строка больше не подходит).

В первой странице шаблона region-after была бы единственная таблица-строка с пробелом «Всего:».

Остальная страница шаблона region-after будет иметь одну строку таблицы с пробелом «Всего:», а затем «Продолжение предыдущей страницы».

В последнем шаблоне страницы ничего не было бы в регионе-после для Total :, только «* Продолжение предыдущей страницы».

При создании таблицы добавьте строку «Всего:» в таблице после добавления всех остальных строк с соответствующим итогом в ней. Вы можете либо просто добавить в конце (без этих пустых строк), либо если вы вставляете пустые строки, тогда создайте область - после того, как одна строка будет меньше, чтобы разместить эту строку. Я бы не рекомендовал этого, хотя, если у вас не должно быть пустых строк, и все таблицы должны быть одинаковой высоты. Вы также можете просто выйти в нижний колонтитул и вытащить маркер в нижний колонтитул без маркера-маркера.

Единственное предостережение в этом состоит в том, выбраны ли размер строки и размеры страницы так, чтобы строка «Всего:», расположенная в области после области, хорошо совпадала с остальной частью таблицы.

См. How to position a block at the bottom in the region-body для настройки и порядка шаблонов страниц. Вы могли бы использовать единственный шаблон страницы в этом случае, чтобы ничего не помещать в регионе, после того, как вы не захотите использовать строку «Продолжение» в этом случае.

Смежные вопросы