function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
naveen reddy 19naveen reddy 19 

How to apply page break after each element in repeat in visualforce when rendering as pdf

Hi All,

 I'm trying to render a VF page as pdf. The Vf page will iterate over a list account records with repeat tag.
For each element in repeat tag I want apply a page break. The below code working but is has a issue. The below code showing empty pdf after last element. How to avoid showing empty pdf page after last page.
 
<apex:page standardController="Account" recordSetVar="accnts" sidebar="false" renderAs="pdf">
    <apex:pageBlock title="My Content" > 
        <apex:repeat value="{!accnts}" var="acc" rows="3" first="5" >   
            <div style="page-break-after:always">          
                <apex:outputText style="color: #f60; font-weight: bold;font-size:30px;" value="{!acc.Name}" >    
                </apex:outputText>
            </div>
        </apex:repeat>
    </apex:pageBlock>
</apex:page>

Thanks in advance.

Regards,
Naveen.​
Best Answer chosen by naveen reddy 19
Waqar Hussain SFWaqar Hussain SF
<apex:page standardController="Account" recordSetVar="accnts" sidebar="false" renderAs="pdf">
    <apex:pageBlock title="My Content" > 
	<apex:variable value="{0}" var="count">
        <apex:repeat value="{!accnts}" var="acc" rows="3" first="5" >   
            <apex:variable value="{!count+1}" var="count">
			<div style="{!IF(accnts.size == count, '','page-break-after:always'}">          
                <apex:outputText style="color: #f60; font-weight: bold;font-size:30px;" value="{!acc.Name}" >    
                </apex:outputText>
            </div>
			
        </apex:repeat>
    </apex:pageBlock>
</apex:page>

 

All Answers

NagendraNagendra (Salesforce Developers) 
Hi Naveen,

To use page break after each element in repeat tag you may use something like
page-break-after: always;
CSS to break the page in PDF
</apex:repeat>
      </apex:pageBlock>
  <p style="page-break-after: always;" ></p>
</apex:repeat>
In order to avoid showing empty pdf page after the last page, You can use some CSS hack like if this is your last page then use` display:none css` in this` p tag`

Hope this helps.

Please mark this as solved if the information helps.

Thanks,
Nagendra

 
Waqar Hussain SFWaqar Hussain SF
<apex:page standardController="Account" recordSetVar="accnts" sidebar="false" renderAs="pdf">
    <apex:pageBlock title="My Content" > 
	<apex:variable value="{0}" var="count">
        <apex:repeat value="{!accnts}" var="acc" rows="3" first="5" >   
            <apex:variable value="{!count+1}" var="count">
			<div style="{!IF(accnts.size == count, '','page-break-after:always'}">          
                <apex:outputText style="color: #f60; font-weight: bold;font-size:30px;" value="{!acc.Name}" >    
                </apex:outputText>
            </div>
			
        </apex:repeat>
    </apex:pageBlock>
</apex:page>

 
This was selected as the best answer
naveen reddy 19naveen reddy 19
Thanks Nagendra and Wagar,

Finally with few changes from above worked
 
<apex:page Controller="PdfTest"  sidebar="false" renderAs="pdf">
    <apex:pageBlock title="My Content" > 
    <apex:variable value="{!0}" var="count"/>   
        <apex:repeat value="{!accnts}" var="acc"  >   
            <apex:variable value="{!count+1}" var="count"/>
            <div style="{!IF(accnts.size == count, '','page-break-after:always;')}">          
                <apex:outputText style="color: #f60; font-weight: bold;font-size:30px;" value="{!acc.Name}" >    
                </apex:outputText>
            </div>            
        </apex:repeat>
    </apex:pageBlock>
</apex:page>