Здравствуйте!
ситуация такая:
на стандартном листе (view) записей поставил кнопку чекнув в ее настройках Display Checkboxes (for Multi-Record Selection).
после этого на следущей VF странице (куда мы приходим с кнопки) все чекнутые пользователем записи доступны в переменной !selected (просто магия!) при стандартном контроллере (то есть кастомного или расширенного контроллера нет). Только разметка, где Apex:repeat разматывает массив !selected.
Но, это ПДФ-нутая страница. И там нужно ставить разделение страниц (например так: <div style="page-break-after: always" />, иначе дизайн может поплыть.
И мне нужно ставить этот Див после 20-го повторения Рипита, а я не знаю как "словить" этот момент только средствами доступными в VF разметке. Пока в Рипите просто ограничил кол-во Rows.
Наверное придется расширять станд контроллер. Но как там получить эти записи в !selected?
Пока это не срочный вопрос, но как говорится, есть над чем подумать...
Все очень просто  
 
Есть такая конструкция:
<apex:variable var="rowNum" value="{!1}"/>
<apex:repeat value="{!myCollection}" var="item">
    ...
    <apex:variable var="rowNum" value="{!rowNum + 1}"/>
</apex:repeat>Объявляем переменную прямо на VF странице и потом в цикле repeat увеличиваем на единицу.
Как дальше использовать переменную для того чтобы разбить пачку на пачки по 20 не составит труда  
 
Подробности можно можно найти здесь 
http://blog.jeffdouglas.com/2010/04/02/visualforce-row-counter-for-iteration-components/
Ну сегодня просто день чудес! Меня приятно удивил !selected, но это было не последней хорошей новостью.
А оператор % в формулах работает??
буду пробовать вот так:
<apex:pageBlock rendered="{  (!rowNum%20=0), true, false }"> 
 <div  style="page-break-after: always" />
 </apex:pageBlock>
Все вроде готово. Пришлось немного пободаться с формулами.
Вот это задается в начале странице:
<apex:variable var="rowNum" value="{!0}"/>и обратите внимание, что отсчет начинается с нуля, иначе вы будите удивляться, почему на первой странце элеметов на один меньше, чем на последующих.
Далее прямо в самом Рипите (после выводимых элеметов) ставите:
<apex:variable var="rowNum" value="{!rowNum + 1}"/>
   
   <apex:pageBlock rendered="{! IF(MOD(rowNum,20)=0,true, false)}" >Вот тут указана формула MOD(n1,n2). В отличие от оператора "%" (который в формулах не работает) она вовращает остаток от деление первого аргумета на второй, а не значение после запятой в результате деления. Но в нашем случае механизм использования аналогичен с "%" - ловим "0".
И как указано в CSS руководствах при использовании сл стиля:
<div style="page-break-before: always" >
див не должен быть абсолютно пустым.
Пока все.
PS:
Но я уже чувствую, что попросят выбранные в !selected записи сортировать в момент вывода (на PDF страницу) по какому то полю. И тут придется думать как это сделать в пределах только VF  странице, или как-то получать доступ к !selected в расширении стандартного контроллера.