I have a requirement where products list will be displayed in pdf. products list may vary depending upon some condition. i dnt want a single page break in my pdf, want to generate pdf in single page. i tried with css and div with style as "page-break-inside:avoid" but no luck :(
Any help will be appreciated.
below is my code
<apex:page renderAs="pdf" standardController="SFA_Customer_Activity_Report__c" extensions="SFA_PL_FOC_Document_Ext" cache="false" applyHtmlTag="false" applyBodyTag="false" standardStylesheets="false" showHeader="false" sidebar="false">
<head>
<style>
body { font-family: 'Times New Roman'; font-size : 13px;}
@page{
size: A4;
margin-top: -10px;
margin-left: 30px;
margin-right: 30px;
margin-bottom: 15px;
box-sizing: border-box;
}
.tableHeader
{
border-style: inset;
border: 1px black;
}
.boxed {
width: 100px;
align: right;
padding: 25px;
border-radius: 15px;
border: 1px gray;
margin: 25px;
border-style: inset;
}
.BigBox
{
width: 100%;
float: left;
height: 100%;
padding: 0px;
align:left;
margin-left: 0;
margin-top: 0;
border-radius: 15px;
border: 1px gray;
margin-left: 0;
border-style: inset;
}
.smallBox
{
width: 280px;
height:3px;
float: left;
padding: 25px;
align:left;
border-radius: 15px;
border: 1px gray;
margin-left: 0;
margin-top: 0;
border-style: inset;
}
.tinyBox1
{
width: 70px;
height:3px;
float: left;
padding: 25px;
align:left;
border-radius: 15px;
border: 1px gray;
margin-left: 0;
margin-top: 0;
border-style: inset;
}
.tinyBox2
{
width: 150px;
height:3px;
float: right;
padding: 25px;
align:left;
border-radius: 15px;
border: 1px gray;
margin-left: 0;
margin-top: 0;
border-style: inset;
}
.myBigBox
{
width: 80px;
padding: 25px;
align:left;
border: 1px gray;
border-style: inset;
}
.smallBox2
{
padding: 25px;
align:left;
border-radius: 15px;
border: 1px gray;
border-style: inset;
}
.smallBox3
{
height:180px;
padding: 25px;
align:left;
border-radius: 15px;
border: 1px gray;
border-style: inset;
}
.smallBox4
{
height:50px;
padding: 25px;
align:left;
border-radius: 15px;
border: 1px gray;
border-style: inset;
}
.middleBox
{
width: 30%;
height:1700px;
padding: 25px;
align:right;
border-radius: 15px;
border: 1px gray;
border-style: inset;
}
.dataTableHeader
{
border: 0.5px black;
border-style: inset;
}
</style>
</head>
<apex:form >
<div style="width:100%;height:100px;" >
<table>
<tr width="100px">
<td width="10px">
<div style="float:left;width: 100px;height:65px;"><apex:image id="theImage" value="{!$Resource.AbbottPDFLogo}" width="70" height="45"/></div>
</td>
<td width="50px">
<div style="width: 300px;margin-top:0px;margin-left:-20px;"><p style="font-size:20px;">Potwierdzenie Odbioru Produktów</p></div>
</td>
<td width="30px">
<div class="boxed" style="float:right">
{!SFA_Customer_Activity_Report__c.Contact__r.SFA_Contact_Auto_Number__c}
</div>
</td>
</tr>
</table>
</div>
<p>
Przyjmuję do wiadomości, że celem przekazania Produktów jest zapoznanie Diabetyków z zasadami działania i posługiwania się Produktami (celem określonym
poniżej). Osoba poświadczająca odbiór nie będzie czerpać korzyści finansowych z dystrybucji produktów przekazanych przez Abbott oraz nie
będzie otrzymywała od Abbott żadnego wynagrodzenia z tego tytułu. Każde przekazanie produktów z Abbott musi być potwierdzone czytelnym podpisem
oraz pieczątką na liście przewozowym (w przypadku dostawy za pomocą firmy kurierskiej) lub na druku potwierdzenia odbioru produktów w momencie
otrzymania produktów. Niniejszym zobowiązuję się do sprawdzenia zgodności pomiędzy ilością produktów dostarczonych a ilością produktów wpisanych
na potwierdzeniu przed podpisaniem dokumentu.
</p>
<p>
Przyjmuję do wiadomości, że otrzymane przeze mnie produkty będą służyły wyłącznie opisanym niżej celom. Zobowiązuję się dołożyć należytej staranności,
aby Diabetyk wykorzystał w ramach prezentacji glukometru ilość pasków testowych Optium Xido do badania poziomu glukozy, która umożliwi mu jedynie
zapoznanie się z jego właściwościami i zasadami działania. Zobowiązuję się również wyrównać wszelkie szkody, jakie Abbott poniesie w razie naruszenia
obowiązku przekazywania produktu w sposób zgodny z dyspozycją Abbott.
</p>
<div>Przekazane Produkty będą używane wyłącznie w celu: - Demonstracji - Ewaluacji Szkolenia</div>
<br/>
<table width="100%" >
<tr width="100%" border="1">
<td class="myBigBox" width="50%">
{!SFA_Customer_Activity_Report__c.Account__r.Name}
</td>
<td width="50%">
<table>
<tr>
<td>
<div class="smallBox">
{!SFA_Customer_Activity_Report__c.Account__r.SFA_Account_Street__c}
</div>
</td>
</tr>
<tr>
<td>
<div class="smallBox"> {!SFA_Customer_Activity_Report__c.Account__r.SFA_Account_City__c}</div>
</td>
</tr>
<tr>
<td>
<div class="tinyBox1">{!SFA_Customer_Activity_Report__c.Account__r.SFA_Account_ZIP_Code__c}</div>
<div class="tinyBox2">{!SFA_Customer_Activity_Report__c.Account__r.phone}</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" height="200px">
<tr>
<td style="width:70%">
<p style="font-size: 100%; margin-top:0px;">
Jednocześnie potwierdzam, że każde wcześniejsze wydanie miało ten sam charakter.
Wyrażam zgodę na przetwarzanie moich danych osobowych zawartych w niniejszym formularzu przez Abbott Laboratories Poland Sp. z o.o. z siedzibą w Warszawie, ul. Postępu 21B w celach związanych z nabyciem produktów Abbott, w tym w szczególności w celu prowadzenia niezbędnych szkoleń, postępowania reklamacyjnego dotyczącego produktów Abbott lub postępowania w związku z incydentem medycznym. W przypadku zgłaszania reklamacji moje dane osobowe zostaną przekazane organom Państwa, które są uprawnione do otrzymania tych danych na podstawie obowiązujących przepisów prawa, w szczególności Prezesowi Urzędu Rejestracji Produktów Leczniczych, Wyrobów Medycznych i Produktów Biobójczych.
</p>
<table style="width:100%">
<tr>
<td style="width:80%">
<div style="float:left;width:20px;height:15px;margin-top:14px;"><apex:image id="checkboxImage" value="{!$Resource.UncheckedCheckbox}" width="20" height="15"/></div>
<p style="font-size: 100%;">
Wyrażam zgodę na przetwarzanie moich danych osobowych w celach marketingowych, w tym również na otrzymywanie informacji marketingowych za pomocą środków komunikacji elektronicznej.
<br/>
Jestem świadomy/-a dobrowolności podania danych, prawa dostępu do treści swoich danych oraz prawa ich poprawiania.
</p>
</td>
<td style="width:40%">
<div class="smallBox2">{!polandDateFormat}</div>
</td>
</tr>
</table>
</td>
<td style="width:30%;">
<div class="smallBox3">Czytelny podpis (imię i nazwisko) lub imienna pieczątka z podpisem</div>
</td>
</tr>
</table>
<br/>
<apex:dataTable value="{!productList}" var="row" cellPadding="10" width="700" cellSpacing="8" headerClass="dataTableHeader">
<apex:column headerValue="Data otrzymania produktów (miesiąc słownie)" value="{!row.polandDate}" width="150" style="text-align:left;border:0.5px solid black;"/>
<apex:column headerValue="Nazwa i numer katalogowy produktu" width="350" style="text-align:left;border:0.5px solid black;" >
<apex:image id="checkboxImage2" value="{!$Resource.UncheckedCheckbox}" rendered="{!row.unchecked}" width="20" height="15"/>
<apex:image id="checkboxImage3" value="{!$Resource.checkedCheckbox}" rendered="{!row.checked}" width="12" height="13"/>
<apex:outputText > {!row.productName}</apex:outputText>
</apex:column>
<apex:column headerValue="Ilość otrzymanych nieodpłatnie produktów" value="{!row.placementInCount}" width="100" style="text-align:left;border:0.5px solid black;"/>
<apex:column headerValue="Czytelny podpis (imię i nazwisko) lub imienna pieczątka z podpisem osoby potwierdzającej odbiór" width="100" style="text-align:left;border:0.5px solid black;"/>
</apex:dataTable>
<div style="width:100%;page-break-inside:avoid;page-break-before: avoid;page-break-after: avoid;">
<table>
<tr>
<td>
<p>* Szare pola wypełnia Abbott.</p>
</td>
<td>
<div style="float:right;"><apex:image id="AbbottDiebetisCareLogo" value="{!$Resource.AbbottDiebetisCareLogo}" width="130" height="85"/></div>
</td>
</tr>
</table>
</div>
</apex:form>
</apex:page>